我有一個使用引導程序來啓動我的MSI文件維克斯安裝程序。我通過在我的wix項目中調用批處理文件作爲後期構建事件來完成此任務。然後手動調用蠟燭和光源,並將各種變量傳遞到Bundle.wxs文件中。這一切工作,併產生叫我的MSI文件exe文件..維克斯引導程序 - 設置版本號捆綁
不過,我現在想的MSI BuildVersion傳遞到包文件。在創建msi的wxs文件中,我使用BuildBuilder部分中的BuildVersion,使用BuildVersion =%(AssemblyVersion.Version)。
我不能不管我嘗試訪問該變量,以便將其傳遞給我的build_bootstrapper.bat文件。但是我可以傳入硬編碼值。我目前正在建立自己的AssemblyVersionNumber enviornment變量,你可以在AfterBuild部分見下圖:
<AssemblyVersionNumber Condition="'$(AssemblyVersionNumber)' == ''">$(BuildVersion)</AssemblyVersionNumber>
,但它是由它獲取我的腳本文件時(即使如果硬編碼它的人口)爲空。我已經嘗試了一切。
有誰知道我如何能得到%(AssemblyVersion.Version)任何想法;從後構建步驟到我的命令文件?
在此先感謝
<Target Name="BeforeBuild">
<GetAssemblyIdentity AssemblyFiles="..\..\App\AppThing\bin\Release\AppThing.exe">
<Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
</GetAssemblyIdentity>
<PropertyGroup>
<DefineConstants>BuildVersion=%(AssemblyVersion.Version);</DefineConstants>
</PropertyGroup>
</Target>
<Target Name="AfterBuild">
<PropertyGroup>
<DefineConstants>BuildVersion=%(AssemblyVersion.Version);</DefineConstants>
<AssemblyVersionNumber Condition="'$(AssemblyVersionNumber)' == ''">$(BuildVersion)</AssemblyVersionNumber>
</PropertyGroup>
</Target>
<PropertyGroup>
<PreBuildEvent>$(ProjectDir)scripts\copy_services.bat $(SolutionDir) $(ProjectDir)</PreBuildEvent>
</PropertyGroup>
<Target Name="AfterClean">
<Message Text="Cleaning wix files, TargetDir is: $(TargetDir)" Importance="High" ContinueOnError="true" />
<CreateItem Include="$(TargetDir)\**\*.*">
<Output TaskParameter="Include" ItemName="BinFilesDir" />
</CreateItem>
<Delete Files="@(BinFilesDir)" />
</Target>
<PropertyGroup>
<PostBuildEvent>$(ProjectDir)scripts\build_bootstrapper.bat $(ProjectDir) $(ConfigurationName) $(AssemblyVersionNumber)</PostBuildEvent>
</PropertyGroup>
嗨,非常感謝您的回覆。 恐怕我已經試過了。這似乎是使用%(AssemblyVersion.Version)的一個特別問題。的2條線以下結果: 1:空字符串%(AssemblyVersion.Version) AssemblyVersionNumber> 2:項目目錄。 $(ProjectDir) AssemblyVersionNumber> 我可以訪問和存儲一些變量,但不是程序集版本號! 任何想法? 謝謝 –
Yos
嗯,你可以在beforebuild目標的屬性組中嘗試執行'%(AssemblyVersion.Version) BuildNumber>',然後在AssemblyVersionNumber的定義中再次使用'$(BuildNumber)'。可能是因爲來自另一個目標中的GetAssemblyIdentity目標的輸出項目僅具有該目標的範圍。更重要的是,剛剛轉會'%(AssemblyVersion.Version) AssemblyVersionNumber>'到您的BeforeBuild目標的的PropertyGroup –
嗨。無論如何,我也嘗試過,但非常感謝你。 我實際上剛剛恢復調用一個簡單的C#應用程序來檢索給定的exe的程序集版本號。然後我從我的後期構建步驟調用的批處理文件中調用該方法。然後,我可以使用它傳遞給wix包,一切都很好。我以前試圖避免這一點。 謝謝你的回覆。我會投票給它,但不能真正接受它,因爲它可能會誤導別人,我希望對你沒有問題。 – Yos