我的应用程序有一个版本控制文件和许多未版本控制的文件。 我希望这里描述的行为是默认行为,但我没有看到该行为。
基本上,如果未修改,则应替换未版本控制的文件,如果已修改,则应将其保留。
从日志来看,安装阶段似乎完全符合我的预期。 我的任何未版本控制文件均未被修改。 对于每个文件,我都会收到一条消息,说明Overwrite; Won't patch
(如果哈希不同(或Won't overwrite; won't patch
(如果哈希相同(。
但是,当删除阶段运行时(在安装完成后在默认位置运行(,它会删除我所有未版本控制的文件。
关于为什么可能,我唯一的猜测是因为该文件在每个包中都有不同的 GUID,但我认为每次创建安装程序时都可以重新生成文件 GUID。
我意识到我可以在安装发生之前更改删除阶段,但我希望如果升级失败,应用程序将保留在原位,因此我希望避免这种行为。
我可以做些什么来防止卸载阶段删除我的文件?
经过一番磕磕绊后想通了。 事实证明,向heat.exe
提供-gg
标志(将在热量运行时生成 GUID((随机 GUID((与将-ag
标志传递给heat.exe
后者将 GUID 设置为heat
运行时*
,以便在运行时生成 GUID(一致(candle
是有区别的。
如果我将-ag
传递给heat.exe
,则我会获得一致的 GUID 并且升级行为正确。