如何将 ui 中 WiX Msi 安装路径的默认值设置为 Program Files?

How to set default value of WiX Msi install path in the ui to Program Files?

我已经创建了一个 WiX 安装程序 MSI。当我运行msi时,在UI中要求安装路径。目前它加载包含大部分免费 space 的驱动器。我怎样才能将它设置为一直在程序文件文件夹中?我尝试了下面的行,但没有用。

 <Property Id="WIXUI_INSTALLDIR" Value="C:\Program Files\" />

下面是我为上述元素得到的错误。

 The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2343. The arguments are: , , 

如何使 UI 加载 C:\Program Files 始终作为默认位置?任何帮助将不胜感激。

您想使用已经定义的 windows installer properties which are always defined by Windows Installer (caveat on some 64-bit only properties). In this case specifically the ProgramFilesFolder

尝试使用这样的目录定义:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLDIR" Name="MyProductFolder" />
            </Directory>
        </Directory>
    </Fragment>
</Wix>

然后,遵循与此关于 using WixUI_InstallDir

的快速教程页面相同的原则

你会想做的

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />

现在,当您显示允许您更改安装位置的 UI 页面时,它的值应该是 C:\Program File\MyProductFolder

作为旁注,我会避免将安装位置设置为 just C:\Program Files,因为这可能会导致您向该位置添加大量无关文件它们应该包含在 product/program 文件夹中。

你也不应该尝试硬编码像 "C:\Program Files\" 这样的路径。在这个具体案例中,我可以给你两个简单的例子,为什么不这样做。不能保证用户使用 C:\ 驱动器作为他们的主驱动器,甚至根本不使用 C:\ 驱动器(关于这个 here 的一个轶事)。另一个问题是(对于 32 位安装)在 32 位机器上您需要安装到 Program Files 位置,但在 64 位机器上您需要安装到 "Program Files (x86)" 位置。