【发布时间】: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