我有一个必须维护的Installshield Installscript MSI安装程序 . 它包含支持文件/广告牌中的大约10个文本文件 . 安装程序运行时,我使用以下代码在自定义Installscript函数中打开文件以进行编辑/复制:
OpenFile(nvReadFileHandle,SUPPORTDIR,LOGGER_PRM)
这段代码完美地适用于大约一千次安装,其中许多是安装程序的确切版本 . 然后,昨天,它第一次失败了 .
查看msi日志后,我看到提取的文件为:
%TEMP%\ 3 \ \ < - 忽略空格
执行上述代码时,SUPPORTDIR的值为:
%TEMP%\ \ < - 忽略空格
这从未失败过 . 那现在为什么会这样呢?我该怎么做才能解决它?当我谷歌问题时,我看到相互矛盾的信息 . 考虑到情况,我宁愿不做50次试验和错误来获得解决方案 .
编辑:这里有更多信息 . 我刚刚发现我们安装的服务器是虚拟机的克隆 . 我怀疑使用的环境变量不正确 . 如果我们输入“cd%temp%”,它将转到上面的第一个目录 . 但是,如果我查看名为TEMP的环境变量,它们都会引用上面的第二个目录 .
2 回答
使用以下内容获取SUPPORTDIR:
好吧,我明白了 . 这是发生的事情,以防其他人遇到此问题:
首先,我在http://social.technet.microsoft.com/Forums/windowsserver/en-US/01fc43a4-08b3-49c5-b265-60b819775194/temporary-directory-environment-variable-in-windows-server-2008?forum=windowsserver2008r2general找到了答案
如果链接断开,使用用户名triegler的人说:
“经过进一步的研究,我发现了这个:
http://technet.microsoft.com/en-us/library/cc755098.aspx
如果每个会话设置了临时文件夹,则会导致此行为 . 将其关闭,注销,重新登录,您应该直接保存到root temp文件夹 .
添”