Wix Burn:如何存储自定义 InstallFolder 以供以后修改?

Wix Burn: How to store the custom InstallFolder for later modifications?

我正在努力解决这个问题。我为我的 Bootstrapper 应用程序编写了自定义 UI。为 InstallFolder 设置默认值不是问题,但是当用户更改此路径时,我如何存储此路径以便以后在 add/remove 程序中进行更改,例如什么时候应该通过修改 Bundle 安装 bundle 中的另一个 Package? 写入注册表可能是一个选项,但引导程序应用程序不会一直 运行 提升,因此它无法写入 HKLM。但是应该有办法做到这一点,我看到 Visual Studio...

有类似的事情

您应该将注册表中的 InstallFolder 值存储在与引导程序应用程序打包在一起的一个(或全部取决于其编写方式)MSI 中。在启动时,您可以使用 util:RegistrySearch 在引导程序中查找和设置 InstallFolder。

<Fragment>      
    <util:RegistrySearch
        Id="ServerInstalledCheck"
        Root="HKLM"
        Key="SOFTWARE$(var.OEMRegistryRootKeyName)\v7"
        Value="ServerPath"
        Result="value"
        Variable="ServerInstalled"/>
    <util:DirectorySearch
        Path='[ServerInstalled]'
        Variable='InstallFolder'
        After='ServerInstalledCheck'
        Condition='ServerInstalled' />
</Fragment>

我认为您可以直接在注册表搜索本身中设置变量 InstallFolder 并省略 DirectorySearch。使用 DirectorySearch 方法只是为了确保我们只将 InstallFolder 设置到机器上实际存在的位置。可能还有其他优点,但暂时想不起来。

这将在全新安装时保留您的默认 InstallFolder 位置,并在 运行 uninstall/modify/upgrade 时 'remember' 选择安装位置。

你是对的,你不能依赖于在你的引导程序应用程序中写入任何注册表项,因为它不能保证(而且真的不应该)运行 提升。


这基本上遵循 here 解释的 'remember property' 模式。每当您想记住 modify/upgrade/removal 期间在之前安装中设置的值时,这通常是去向。