簡體   English   中英

幫助一步構建所有項目 + 安裝程序 (.NET + WiX)

[英]Help with one step build all projects + installer (.NET + WiX)

我在安裝程序上有預構建事件,以使用適當的配置等重建項目。

如果我在 Visual Studio 中的 WiX (3.0) 項目上右鍵單擊構建/重建,一切都可以正常構建,但是如果我嘗試在 wixproj 文件上運行 MSBuild,則預構建事件將引發錯誤。

我可以改為在 wixproj 上調用 Candle 和 Light,但它不會運行預構建事件。

預構建事件依賴於 VS 提供的宏,除了創建另一個項目之外,我不知道如何解決這個問題,並且基本上只使用項目的預構建事件,它只是尖叫 hack。

另一個問題是我需要從命令行將自我更新的版本號輸入 WiX。

我打算只使用 csproj 來處理版本號並更新它,然后只對 MSBuild 和 Candle 和 Light 進行脫殼,但問題是我不知道如何從硬編碼以外的代碼訪問解決方案目錄它在

我們發現使用實用程序來編輯項目本身並在使用自動構建器(在我們的示例中為VisualBuild )構建之前轉儲所有預構建和構建后事件是最簡單的。

這給我們留下了一個漂亮而多汁的構建過程,它不依賴於 IDE 中的任何討厭的黑客,並讓我們完全控制源的來源和構建的組件的去向。

我正在使用一種對我來說效果很好的不同方式,我在此處進行了描述

  • 在一個批處理文件中維護版本號,它只是將它寫入環境變量
  • 我通過運行一個批處理文件來創建我的發布版本, 該批處理文件首先調用“版本號”批處理文件(因此我在名為%VersionNumber%的環境變量中有版本號) ,然后執行一個MSBuild 項目文件
  • MSBuild 項目文件構建解決方案,我通過從環境變量中讀取它來獲取.csproj文件中.exe 的版本號(如果它存在)(然后我使用MSBuild Community Tasks創建一個帶有版本號的AssemblyInfo文件在預構建事件中)
    這意味着 .exe 在從 Visual Studio 構建時具有 0.0 版,但我對此很好,因為我從批處理文件創建了我的所有版本。
  • 使用WiX 設置創建 relase 構建,我執行另一個批處理文件,它只調用上面提到的“構建”批處理文件,然后調用 WiX 實用程序candlelight來構建實際設置。
  • candle使用這個.wxs文件來創建設置,我再次從環境變量中獲取版本號: $(env.VersionNumber)
  • light創建的最終.msi文件在其文件名中包含版本號,因為我將文件名(包括帶有版本號的環境變量)作為參數傳遞: -out release\\msi\\bitbucket-backup-%VersionNumber%.msi

一開始我花了一段時間才弄清楚這一切,但現在我以類似的方式發布了我所有的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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