有没有办法在Wix中组合32位和64位安装程序?

时间:2014-03-20 18:22:20

标签: visual-studio wix installation windows-installer

我使用WiX Toolset 3.8与Visual Studio进行Votive集成。我的产品需要安装在32位和64位系统上。两者之间唯一真正的区别是一些64位COM注册,当然还有ProgramFiles vs ProgramFiles (x86)有趣和游戏。

我一直在遵循Microsoft的建议(我现在无法找到)为32位和64位系统创建单独的安装程序。但是,最近我一直在想这是否仍然是最好的做法,或者现在是否有更好的方法?

我从同一个WiX源创建我的安装程序。我一直在做的是为“任何CPU”构建我的所有程序集。但是为WiX安装程序项目提供了单独的x86和x64配置。我有一个config.wxi为正在构建的目标设置正确的路径等,我将它包含在我的所有.wxs文件中。它遵循以下几点:

<?xml version="1.0" encoding="utf-8"?>

<Include>
  <!-- User Configuration - you must ensure all these variables have correct values for your project -->
  <?define InstallName = "Project Name" ?>
  <?define Manufacturer = "My Company" ?>
  <!-- End of User Configuration - do not edit anything beyond this point -->

  <!-- Define platform-specific names and locations -->
  <?if $(var.Platform) = x64 ?>
  <?define ProductName = "$(var.InstallName) (x64)" ?>
  <?define Win64 = "yes" ?>
  <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
  <?define PlatformCommonFilesFolder = "CommonFiles64Folder" ?>
  <?else ?>
  <?define ProductName = "$(var.InstallName) (x86)" ?>
  <?define Win64 = "no" ?>
  <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
  <?define PlatformCommonFilesFolder = "CommonFilesFolder" ?>
  <?endif ?>

  <!-- Set installer version based on the file version of the main assembly. -->
  <?define ProductVersion="!(bind.FileVersion.filSomeKeyFileFromTheProject)"?>
</Include>

到目前为止,我还没有看过Burn(引导程序构建器),但在我正在进行的项目中,我想要这样做。因此,现在是审查社区认为最佳做法的时候了。现在人们如何处理双x86 / x64安装?

1 个答案:

答案 0 :(得分:4)

没有任何改变:MSI仍然不支持32位软件包中的64位组件。使用Burn捆绑包,您可以将这两个包组合起来,并从用户的角度看它看起来像一个。