我在使更新工作的过程中遇到了问题。
使用的更新方式是先卸载再安装。
我的问题如下:
- 我有几个依赖于 Temp 文件夹中的文件的自定义操作,这些都在全新安装中运行良好。
- 然而,当谈到更新时,自定义操作失败了,因为似乎临时文件已作为
AI_RemoveAllTempFiles
操作的一部分被删除
此操作似乎是在安装初始化之后和安装完成之后完成的。 有没有办法在更新时关闭临时文件的删除,或者我应该只删除在安装初始化时执行的 AI_RemoveAllTempFiles 操作?
我曾尝试使用 OLDPRODUCTS 属性来尝试停止 AI_RemoveAllTempFiles 操作,但似乎没有效果。我的意思是我已经修改了 InstallExecuteSequence 表,使 AI_RemoveAllTempFiles
条目的条件为 OLDPRODUCTS =""
最佳答案
我怀疑发生的情况是您的应用程序的旧版本删除了临时文件,而不是新版本。即,当它的卸载由新包中的标准操作 RemoveExistingProducts 触发时,它会执行此操作。你可以在 verbose log 中看到这个很容易。
为避免在更新期间出现此问题,您应该将临时文件添加到 Temporary 文件夹的子文件夹中。此子文件夹应针对每个版本具有唯一的名称,例如您可以将其设置为 [|ProductCode]。
在您的自定义操作中,为确保您始终获得临时文件的正确路径,请使用它们的相应属性,即每个临时文件都关联了一个唯一属性,当您双击 中的文件时出现的对话框中可见>文件和文件夹页面,此属性解析为文件的完整路径。
关于advanced-installer - 高级安装程序 : Stop installer from clearing temp files on upgrade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21988665/