installshield 2012 SUPPORTDIR

问题描述:

我有一个Installshield Installscript MSI安装程序,我必须维护。它包含支持文件/广告牌中的约10个文本文件。当安装程序运行时,我在一个自定义INSTALLSCRIPT功能使用下面的代码打开编辑/复印的文件:installshield 2012 SUPPORTDIR

的OpenFile(nvReadFileHandle,SUPPORTDIR,LOGGER_PRM)

此代码已经非常完美了大概一千安装,其中许多已经是安装程序的确切版本。然后,昨天,它第一次失败了。

看在MSI日志后,我看到该文件被提取到:

%TEMP%\ 3 \ {GUID1} \ < - 忽略空间

当上述代码执行时,在SUPPORTDIR的值是:

%TEMP%\ {GUID2} \ < - 忽略空间

此之前从未失败。那么为什么现在呢?我能做些什么来解决它?当我谷歌问题时,我看到冲突的信息。考虑到这种情况,我宁愿不做反复试验以获得解决方案50次。

编辑:这里有一些更多的信息。我发现我们安装的服务器是虚拟机的克隆。我怀疑使用的环境变量是不正确的。如果我们输入“cd%temp%”,它会转到上面的第一个目录。但是,如果我查看名为TEMP的环境变量,它们都会引用上面的第二个目录。

使用以下方法来获取SUPPORTDIR:

nvBuffSize = MAX_SIZE; 
MsiGetProperty(hMSI, "SUPPORTDIR", svSUPPORTDIR, nvBuffSize); 

好的,我想通了。这里发生了什么事,万一别人运行到这个问题:

首先,我发现我的答案在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

如果每个会话建立临时文件夹,将导致此行为把它们关掉,注销,重新登录,并你应该直接保存到你的根临时文件夹。

添”