我有一个必须维护的 Installshield Installscript MSI 安装程序。它在 Support Files/Billboards 中包含大约 10 个文本文件。当安装程序运行时,我使用以下代码在自定义 Installscript 函数中打开文件进行编辑/复制:
打开文件(nvReadFileHandle,SUPPORTDIR,LOGGER_PRM)
这段代码已经完美地运行了大约一千次安装,其中许多都是安装程序的确切版本。然后,昨天,它第一次失败了。
查看 msi 日志后,我看到文件被提取到:
%TEMP%\3\ {GUID1}\ <-- 忽略空格
当上述代码执行时,SUPPORTDIR 的值为:
%TEMP%\ {GUID2}\ <-- 忽略空格
这以前从未失败过。那么为什么现在会发生呢?我能做些什么来修复它?当我用谷歌搜索问题时,我看到了相互矛盾的信息。考虑到具体情况,我宁愿不要反复试验 50 次以获得解决方案。
编辑:这里有更多信息。我刚刚发现我们正在安装的服务器是虚拟机的克隆。我怀疑使用的环境变量不正确。如果我们键入“cd %temp%”,它将转到上面的第一个目录。但是,如果我查看名为 TEMP 的环境变量,它们都指的是上面的第二个目录。