【问题标题】:WiX: Change .msi Directory and CustomAction table with changes to be used by .msp Patch fileWiX:使用 .msp 补丁文件使用的更改更改 .msi 目录和 CustomAction 表
【发布时间】:2019-10-09 15:51:09
【问题描述】:

使用 Wix Toolset v3.11,我为我的应用程序(比如说 1.1 版)创建了一个 .msi 文件,其中包含一个以 LocalAppDataFolder 为目标并在其下放置一个 Temp 文件夹的 Directory 元素。此结构与 DirectoryRef 元素一起使用,以将一些文件放在那里,这些文件可以在 InstallFinalize 上的自定义操作中访问。现在我生成了一个补丁(1.2 版),它在 Temp 文件夹中添加了一些文件。但我希望该文件夹现在位于 TARGETDIR 中。所以我改变了

<Directory Id="LocalAppDataFolder">
  <Directory Id="APPDATA_TEMP" Name="Temp" />
</Directory>

<Directory Id="MY_TEMP_PATH" Name=".">
  <Directory Id="APPDATA_TEMP" Name="Temp" />
</Directory>

在下面

<Directory Id="TARGETDIR" Name="SourceDir">

结构。为了正确应用补丁,我打开了注册表中引用的 .msi 文件(在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\...\Products{GUID}\InstallProperties\LocalPackage) 使用 Orca 工具编辑目录表中的相应值。我还编辑了 CustomActions 表以引用新路径,因为它在那里用作参数。所以,现在当我安装补丁时,它会将所有文件(更改的和新的)放在 LocalAppDataFolder 中,就像初始安装一样。虽然使用正确的参数调用自定义操作。

有没有办法将“基础”msi 更改为针对我的新 Temp 文件夹,或者以某种方式告诉 Patch 使用新文件夹而不管初始路径如何?

目标是无需先卸载应用程序即可应用补丁程序。

非常感谢任何有关如何实现这一目标的帮助。

【问题讨论】:

    标签: wix windows-installer orca msi-patch


    【解决方案1】:

    终于找到了解决办法。所以这就是解决我们问题的方法,如果有人遇到过类似的事情:

    我们在注册表的两个位置找到了 LocalAppDataFolder 的实际路径:第一个条目位于 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders。第二个是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData...\Components。将文件放入 Temp 文件夹的具有组件 ID 的条目仅包含一个值,即该组件中第一个文件的路径。我们将两个路径都更改为新的临时文件夹。

    现在补丁将文件正确地提取到新的临时文件夹中,并且自定义操作可以进一步处理它们。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      相关资源
      最近更新 更多