2009-01-26 39 views
2

我已經預生成事件重建項目,適當的配置等幫助足下構建所有項目+安裝程序(.NET +維克斯)上安裝

如果我右鍵單擊構建/重建的維克斯(3.0)項目在Visual Studio中都很好,但如果我嘗試在wixproj文件上運行MSBuild,則預生成事件將引發錯誤。

我可以改爲在wixproj上調用Candle和Light,但它不會運行預生成事件。

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

另一個問題是,我需要從命令行向WiX提供自更新版本號。

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

+0

什麼是錯誤?我有一段時間讓WiX路徑在開發和構建機器上工作。有辦法做到這一點,如果這是你的問題。至於版本控制,我不知道... – Will 2009-01-26 18:54:28

回答

2

我們發現在使用我們的自動編譯器(在我們的例子中爲VisualBuild)構建之前,使用實用程序編輯項目本身並轉儲所有預構建和後構建事件是最容易的。

這給我們留下了一個不錯的多汁構建過程,它不依賴IDE中的任何討厭的黑客行爲,並且完全控制源的來源以及構建組件的位置。

0

我正在使用不同的方式,對我而言效果很好,which I described here

  • 我保持的版本號in a batch file,這只是將其寫爲可變的環境
  • 創建我的發佈版本運行a batch file首先所謂的「版本號」批處理文件(所以我有版本號在環境變量稱爲%VersionNumber%,然後執行一個MSBuild project file
  • 的MSBuild項目文件構建解決方案,我得到的.exe文件的版本號the .csproj file從環境變量讀它,如果它存在(然後我使用MSBuild Community Tasks創建AssemblyInfo文件與預編譯事件中的版本號)
    這意味着.exe從Visual Studio生成時的版本爲0.0,但我很好,因爲我創建了批處理文件中的所有版本。
  • 要創建RELASE構建 WiX的設置,我執行another batch file,這只是調用上面提到的「建立」批處理文件,然後調用維克斯公用事業candlelight建設的實際設置。
  • candle使用this .wxs file創建安裝,在這裏我再次從環境變量中獲取的版本號:$(env.VersionNumber)
  • light創建的最終.msi文件包括其文件名中的版本號,因爲我通過文件名(包括版本號的環境變量)作爲參數:-out release\msi\bitbucket-backup-%VersionNumber%.msi

我花了一段時間來計算出這一切的開始,但現在我釋放我以類似的方式,所有的項目。