3

我遇到的问题与此处描述的问题非常相似: ProgramFiles64Folder is installed to \Program Files (x86)\ in WIX Installer

但是,那里的解决方案对我不起作用。Wix 仍会生成安装到 C:\Program Files (x86) 的 .msi

我将以下代码放在我的 Product.wxs 文件中:

<?if $(var.Platform) = x64 ?>
  <?define Win64 = "yes" ?>
  <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
  <?define ConfigFolder = "Release" ?>
<?else ?>
  <?define Win64 = "no" ?>
  <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
  <?define ConfigFolder = "Release_x86" ?>
<?endif?>

然后稍后我尝试指定安装文件夹,如下所示:

<Directory Name="SourceDir" Id="TARGETDIR">
    <Directory Name="$(var.PlatformProgramFilesFolder)" Id="$(var.PlatformProgramFilesFolder)">
    ...

我验证了 var.Platform 设置正确,因为它从正确的 ConfigFolder 复制源文件。但是,似乎 ProgramFiles64Folder 和 ProgramFilesFolder 都设置为 C:\Program Files (x86)

我验证了使用 -dPlatform=x64 选项调用了candle.exe。

我什至尝试在我的 Package 标签中指定平台

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64" />

没有任何帮助,它仍然尝试安装到 C:\Program Files (x86)

知道我还能尝试什么吗?

谢谢你。

我正在使用 WiX 3.9 版

4

4 回答 4

1

事实证明,一个不同的 .wxs 文件正在与 WixPerUserFolder 和其他相关变量混淆。

于 2015-01-20T22:12:33.237 回答
0

我唯一能想到的是,您要安装到该位置的组件是 32 位组件,因此它们会被重定向到 x86 位置。64 位软件包可以有 32 位和 64 位组件,因此您可能需要将它们显式标记为 Win64='yes'

于 2015-01-06T19:05:58.430 回答
0

按照此博客中的示例发布一个新的 64 位软件包,您将在 Program Files 文件夹中进行安装。 http://msdn.microsoft.com/en-us/library/gg513929.aspx

于 2015-01-09T15:12:22.757 回答
-1

使用WixUI_Advanced? 这不会在 x64 上设置正确的默认文件夹。

解决方法是将其添加到产品项中:

        <!-- Workaround Wix Bug: https://github.com/wixtoolset/issues/issues/2165 -->
    <CustomAction Id="Overwrite_WixSetDefaultPerMachineFolder" Property="WixPerMachineFolder"
                    Value="[$(var.PlatformProgramFilesFolder)][ApplicationFolderName]" Execute="immediate" />
    <InstallUISequence>
        <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" After="WixSetDefaultPerMachineFolder" />
    </InstallUISequence>
    <InstallExecuteSequence>
        <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" After="WixSetDefaultPerMachineFolder" />
    </InstallExecuteSequence>
    <SetProperty Id="ARPINSTALLLOCATION" Value="[APPLICATIONFOLDER]" After="CostFinalize" />

有关错误描述和解决方法来源,请参见此处:
https ://github.com/wixtoolset/issues/issues/2165

于 2019-03-07T16:36:03.683 回答