2009-05-25 33 views
2

我想使用相同的Visual Studio 2008部署項目構建一個x86 msi包和一個x64包。使用相同的vdproj文件創建x86和x64安裝程序?

我在項目屬性對話框中看到一個TargetPlatform,我知道我可以用它來選擇x86或x64(或Itanium)。

的問題是,我似乎不能將此屬性與項目配置相關聯(?)

理想情況下,我想能夠做的就是通過執行devenv的建立單獨的x86和x64 msi安裝。從構建腳本(批處理文件)中執行兩次,每次調用通過提供參數以某種方式設置TargetPlatform屬性。

如果可能,我想避免使用WIX或其他第三方工具。

注:我已經注意到,x86和x64部署項目之間的差異主要是:

  • 文件夾\ DefaultLocation = ProgramFilesFolder(86)| ProgramFiles64Folder(x64)
  • Product \ TargetPlatform =「3:0」(x86)| 「3:1」(x64)| 「3:2」​​(安騰)

難道我真的必須創建兩個單獨的部署項目,才能使用devenv.exe創建單獨的msi包,僅僅是因爲這兩個區別?

我想我可以使用腳本來製作的devenv.exe(?)

回答

2

當我有這個問題,我不得不使用字符串執行devenv的命令之前在vdproj文件替換的每次調用之前這些更改。對於替換我使用的文件SDCTasks 後來我的MSBuild項目看起來幾乎像這樣替換任務:對我來說

<Project DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
<Configuration>Release</Configuration> 
<x86>3:0</x86> 
<x64>3:1</x64> 
<Import Project="$(SDCTasksPath)\Microsoft.Sdc.Common.tasks"/> 
<Target Name="Default"> 
    <File.Replace Path="$(SolutionDirectory)Setup\Setup.vdproj" OldValue="%22TargetPlatform%22 = %22$(x86)%22" NewValue="%22TargetPlatform%22 = %22$(x64)%22" /> 
<Exec Command="devenv.exe $(SolutionDirectory)Solution.sln /build $(Configuration) /project $(SolutionDirectory)Setup\Setup.vdproj /projectconfig $(Configuration)"></Exec> 
+0

該解決方案的工作了。 +1 – 2010-03-15 18:45:55

相關問題