簡體   English   中英

可以使用MSBuild + .csproj文件創建msi-installer嗎?

[英]Can an msi-installer be created using MSBuild + .csproj-file?

對於使用Visual Studio Express但沒有設置和部署項目模板的人,可以使用.csproj文件輕松創建msi安裝程序嗎? 我讀過(現在找不到鏈接)一個的csproj文件可以通過的MSBuild(它被轉換到 MSBuild的MSBuild項目文件)使用-究竟什么是需要的InstallShield,維克斯,或安裝和部署項目?

我意識到這可能是一個簡單的問題,但在網上搜索只是解釋了為什么需要MSBuild - 而且它包含在框架本身中。

首先澄清幾點:

  • .csproj 一個MSBuild項目文件,大多數Visual Studio項目文件(包括WiX項目)也是如此。 .sln文件不是MSBuild項目文件,但MSBuild會將其轉換為一個。
  • 從最新版本開始,MSBuild不再是.NET Framework的一部分。 它現在是MS Build Tools,一個單獨的免費產品。
  • 即使使用Visual Studio Express,您也可以充分利用MSBuild。 Express不允許對Visual Studio進行非Microsoft 擴展 WiX工具集確實提供了MSBuild目標/任務文件和Visual Studio擴展。 因此,使用Express,您沒有WiX項目模板擴展器和編輯器。

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.exelight.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM