[英]Wix Burn: How to store the custom InstallFolder for later modifications?
我正在尝试解决这一问题。 我已经为Bootstrapper应用程序编写了一个自定义UI。 设置InstallFolder的默认值不是问题,但是当用户更改此路径时,如何存储此路径以供以后在添加/删除程序中进行更改,例如,应通过修改捆绑软件来安装捆绑软件中的另一个软件包? 可以选择在注册表中进行写操作,但是Bootstrapper应用程序并不会一直运行,因此无法写到HKLM。 但是应该有一种方法可以做到,我在Visual Studio中看到了类似的东西...
您应该将BootStrapper应用程序打包的MSI之一(或全部取决于创建方式)中的注册表中存储InstallFolder值。 在启动时,您可以使用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位置,并在运行以卸载/修改/升级时“记住”所选的安装位置。
没错,您不能依靠自己在引导程序中编写任何注册表项,因为不能保证(而且实际上不应该)提升注册表项。
这基本上是以下这解释了“记住物业”模式在这里 。 每当您想在修改/升级/删除过程中记住上一次安装中设置的值时,通常都可以这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.