Installshield / MSI在卸载过程中安装临时文件

时间:2011-09-15 21:53:57

标签: windows-installer installshield

我有一个运行自定义操作的安装项目。自定义操作本身使用一些临时文件,这些文件在调用自定义操作之前由安装程序复制。自定义操作完成后,将删除这些文件。

在安装阶段,一切正常。

我的问题是在卸载阶段。调用另一个自定义操作,它还需要访问这些临时文件。我的问题是在卸载阶段如何在计算机上临时复制文件?

提前致谢。

2 个答案:

答案 0 :(得分:3)

虽然Cosmin所回答的必须是真的,但他似乎并不知道InstallShield有一个名为Support Files的功能,它已经完成了他描述的所有内容。将一些文件拖到Installation Designer中行为与逻辑|支持文件| Language Independent和InstallShield将自动将它们流式传输到ISSetupFile表中,并对安装期间将文件解压缩到临时目录的自定义操作进行排序,并在最后清理文件。

可以使用[SUPPORTDIR]属性找到这些文件的位置。如果您使用的是延迟自定义操作,那么您将通过CustomActionData属性对此进行序列化。

此外,如果您正在使用DTF自定义操作,您应该知道,如果您使用Content and Copy Always的操作向CA CSPROJ添加内容,那么它将被打包并提取到当前目录以便访问你的代码正在执行。

答案 1 :(得分:1)

Windows Installer不支持临时文件。所以我假设您只是安装一些文件并在安装结束时删除它们。这不是一个好方法,因为对于Windows Installer,它们基本上缺少资源。

临时文件的正确方法是将它们存储在Binary表中,并使用自定义操作在安装开始时提取它们,并在结束时删除它们。多个设置创作工具直接支持此功能。

在您的情况下,您可以尝试这种方法:

  • 不要在安装过程中删除文件(将它们留在磁盘上)
  • 在InstallExecuteSequence
  • 中执行RemoveFiles操作之前安排卸载自定义操作

这样,卸载自定义操作就可以访问您的文件。