【问题标题】:Can util:RegistrySearch variables be used with an ExePackage's SourceFile in Burn?util:RegistrySearch 变量可以与刻录中的 ExePackage 的 SourceFile 一起使用吗?
【发布时间】:2019-01-22 08:48:26
【问题描述】:

我正在开发的程序需要 OBS Studio 以及其他依赖项才能运行。为方便起见,我正在构建一个 Burn 包,它将在安装主应用程序之前按正确顺序安装每个依赖项。

卸载是个问题。 OBS 有自己的卸载可执行文件,并且告诉刻录该可执行文件的位置已被证明是不可能的。安装目录在注册表中清晰可读(OBS 将安装目录存储为键的默认值):

<util:RegistrySearch
 Variable="OBS"
 Root="HKLM"
 Key="SOFTWARE\WOW6432Node\OBS Studio" />

但我无法将变量放入将在卸载期间使用它的 ExePackage 的 SourceFile 中。以下代码在我的尝试中失败了:

<ExePackage Id="Uninstall_OBSStudio"
 SourceFile="!(wix.OBS)\uninstall.exe"
 DetectCondition="NOT OBS_exists"
 Cache="no"
 Compressed="no" />

将变量作为“[OBS]”传递也失败了,被读取为文字字符串。在条件中使用变量没有问题,但这根本不会发生。我什至也尝试将值传递给 WixVariable:

<WixVariable Id="OBS_location" Value="[OBS]" />

无济于事。到目前为止,由于我不明白的原因,util:RegistrySearch 似乎被锁定在 Burn 的某些部分之外。

我应该怎么做才能在 SourceFile 字符串中使用 RegistrySearch 变量?我没有做任何格式化数据的工作。 Burn 甚至可以按照我尝试的方式传递数据吗?有没有更好的方法从 Burn 链的注册表中提取信息?

我真的希望这只是一个语法问题。提前感谢您提供的任何指导。

【问题讨论】:

    标签: wix bootstrapper burn


    【解决方案1】:

    没有。所有包类型的源文件都在您构建捆绑包时解析。在运行时,Burn 会对文件进行哈希处理,以确保它运行的是在编译时指定的文件。

    这里有一个功能请求,可能是创建该安装程序的安装框架的新包类型或 ExePackage 从注册表获取其卸载命令的能力。 https://github.com/wixtoolset/issues/issues

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多