2012-06-07 32 views
1

我有這個WinForms項目(基於this one,但針對SharePoint 2010進行了修改),實際上它是用於安裝SharePoint 2010解決方案程序包(.wsp)的安裝嚮導。如何使用Windows窗體項目中的嵌入式資源創建MSI安裝程序

該項目除了安裝.wsp,還在SQL Server數據庫上運行一些.sql腳本。

我的問題是如何創建一個MSI/EXE安裝程序,其中嵌入了所有資源(.wsp文件,.sql文件,圖像),所以我只有一個文件需要分發?

請記住,使用Visual Studio安裝程序項目不是一個選項,因爲它會生成安裝程序來安裝安裝程序。我不需要,WinForms項目是安裝程序。

希望我很清楚。

謝謝。

UPDATE

只是要清楚,WInFroms項目IS安裝程序。它包含嚮導對話框和運行的代碼安裝SharePoint解決方案,運行SQL腳本等

當我編譯項目我最終結構如下一堆文件:

\en-us 
\Resources 
SomeThirdParty.dll 
AnotherThirdParty.dll 
Setup.application 
Setup.exe 
Setup.exe.config 
Setup.exe.manifest 
Setup.pdb 
Setup.vshost.application 
Setup.vshost.exe 
Setup.vshost.exe.config 
Setup.vshost.exe.manifest 

我需要的是一個工具,可以將所有內容打包在MSI安裝程序中,該安裝程序將自動提取並自動執行setup.exe不是一個生成安裝程序本身的工具,安裝程序已經編碼,它是WinForms項目本身。

回答

1

Advanced Installer爲此提供支持,但您需要的功能僅在許可版本中可用。基本上,您可以創建一個MSI包裝器,它只需啓動您的項目並執行SQL腳本或嘗試使用其專用的SharePoint支持。

另一種方法是類似於IExpress。一個自解壓EXE,它啓動其中包含的文件。

+0

是的,在這一點上,我只是尋找一個工具,從我的Winforms項目的輸出構建生成一個MSI或EXE自動執行。我已經嘗試過IExpress,但它不尊重裏面的文件夾,並且當它提取文件都在根文件夾中(並且我擁有像Resources和stuff這樣的文件夾)。但我喜歡IExpress的功能。任何替代它? – emzero

+0

我忘了提及,由於IExpress不尊重文件夾,安裝程序無法找到一些應該位於/ Resources文件夾下的文件。 – emzero

0

我以前用Wix取得了成功。 http://wix.sourceforge.net/

您可以在MSI中嵌入資源,因此您只能分配一個文件。另外,您需要執行的任何自定義安裝步驟都可以通過在c#或vb.net代碼中編寫自定義操作來完成。

+0

我只是看着它。我的問題是...我已經有了一個WinForms項目,可以滿足我的需求。我真的不想重寫所有的東西進入WiX。有沒有辦法在現有的WinForms項目中使用Wix,並只使用它來生成獨特的MSI安裝程序? – emzero

+0

那麼你是說你的winforms應用程序實際上運行了安裝代碼?如果是這種情況,您可以使用dot net安裝程序http://dblock.github.com/dotnetinstaller/。它基本上可以創建一個包含嵌入資源的exe文件。如果我理解你正在嘗試做什麼,這可能是你需要的。 – Ronnie

+0

是的,winforms實際上是運行安裝sharepoint解決方案所需的一切的安裝程序。所以是的,我不需要一個完整的安裝程序項目,我只需要一種方法將安裝項目打包在exe/msi自動執行文件中。我會看看dotnetinstaller。 – emzero

0

像Cosmin Pirvu提到的,你正在尋求一個自解壓安裝程序。我曾經使用過的一個免費版本來自Chilkat Software,名爲ZIP 2 Secure EXE

如果您的所有程序集都是.NET,那麼您也可以嘗試ILMerge將它們全部集成到一個程序集中。儘管這對於.manifest和.config文件沒有幫助。

編輯: 使用ILMerge的替代方法是將dll嵌入到您的可執行文件as described here中。

相關問題