使用 Wix Toolset v3.11,我为我的应用程序(假设版本 1.1)创建了一个 .msi 文件,其中包含一个以 LocalAppDataFolder 为目标的 Directory 元素,并在其下放置一个 Temp 文件夹。此结构与 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">
结构体。为了正确应用补丁,我使用 Orca 打开了注册表中引用的 .msi 文件(在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\...\Products{GUID}\InstallProperties\LocalPackage 下)工具并编辑目录表中的相应值。我还编辑了 CustomActions 表以引用新路径,因为它在那里用作参数。所以,现在当我安装补丁时,它会将所有文件(更改的和新的)放在 LocalAppDataFolder 中,就像初始安装一样。但是,使用正确的参数调用自定义操作。
有没有办法将“基础”msi 更改为针对我的新临时文件夹,或者以某种方式告诉补丁使用新文件夹而不管初始路径如何?
目标是应用补丁而无需先卸载应用程序。
非常感谢任何有关如何实现这一目标的帮助。