2009-05-25 34 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

相关问题