![](/img/trans.png)
[英]In-use files not updated by MSI-installer (Visual Studio Installer project)
[英]Can an msi-installer be created using MSBuild + .csproj-file?
對於使用Visual Studio Express但沒有設置和部署項目模板的人,可以使用.csproj文件輕松創建msi安裝程序嗎? 我讀過(現在找不到鏈接)一個的csproj文件可以通過的MSBuild(它被轉換到由 MSBuild的MSBuild項目文件)使用-究竟什么是需要的InstallShield,維克斯,或安裝和部署項目?
我意識到這可能是一個簡單的問題,但在網上搜索只是解釋了為什么需要MSBuild - 而且它包含在框架本身中。
首先澄清幾點:
Visual Studio的另一種選擇是SharpDevelop。 它提供了自己的WiX項目模板。
您也可以手動創建WiX項目,如文檔中所述。
使用明確的文件列表可以輕松創建簡單的MSI安裝程序。 您還可以“收獲”.csproj輸出和一些其他Visual Studio項目輸出,以及目錄等。
大多數編輯器(包括Visual Studio Express)都可以幫助您將WiX項目和源文件編輯為XML。 您可能需要告訴它相關的XML Schema文件(.xsd)在哪里獲得內容幫助。 在這種情況下,WiX的壓縮二進制分發可能最簡單。
Windows Installer非常復雜。 WiX工具集允許完全訪問該復雜性,同時盡量使其保持簡單。 使用WiX意味着至少學習一些Windows Installer。
最終,沒有任何安裝程序工具可以查看您的編程項目,並決定您要發送哪些文件以及放置它們的位置。 所以,不,你不能簡單地通過引用.csproj來設計和構建MSI。
我認為WiX將是最好的選擇。 使用Wix構建安裝程序基本上是對candle.exe和light.exe的簡單調用,因此它可以在.csproj內的自定義MSBuild目標中自動執行,沒有任何問題。
但是,需要設置.wixproj項目通常所做的環境。 例如,您需要找到WixSDK以使用蠟燭/燈光二進制文件並將$(OutputPath)屬性傳遞給candle.exe,以便可以在.wxs中使用輸出文件。
畢竟,會有一個這樣的目標啟動安裝程序構建:
<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<Exec Command="$(candleExecutable) product.wxs" />
<Exec Command="$(lightExecutable) product.wixobj" />
</Target>
您還可以向此目標添加條件,以便僅在特定配置上調用它。
不,我不相信Express有任何辦法可以做到這一點。 它不是內置功能,您不能使用Express加載項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.