0

我有一個Installshield Installscript MSI安裝程序,我必須維護。它包含支持文件/廣告牌中的約10個文本文件。當安裝程序運行時,我在一個自定義INSTALLSCRIPT功能使用下面的代碼打開編輯/複印的文件:installshield 2012 SUPPORTDIR

的OpenFile(nvReadFileHandle,SUPPORTDIR,LOGGER_PRM)

此代碼已經非常完美了大概一千安裝,其中許多已經是安裝程序的確切版本。然後,昨天,它第一次失敗了。

看在MSI日誌後,我看到該文件被提取到:

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

當上述代碼執行時,在SUPPORTDIR的值是:

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

此之前從未失敗。那麼爲什麼現在呢?我能做些什麼來解決它?當我谷歌問題時,我看到衝突的信息。考慮到這種情況,我寧願不做反覆試驗以獲得解決方案50次。

編輯:這裏有一些更多的信息。我發現我們安裝的服務器是虛擬機的克隆。我懷疑使用的環境變量是不正確的。如果我們輸入「cd%temp%」,它會轉到上面的第一個目錄。但是,如果我查看名爲TEMP的環境變量,它們都會引用上面的第二個目錄。

回答

2

使用以下方法來獲取SUPPORTDIR:

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

好的,我想通了。這裏發生了什麼事,萬一別人運行到這個問題:

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

如果每個會話建立臨時文件夾,將導致此行爲把它們關掉,註銷,重新登錄,並你應該直接保存到你的根臨時文件夾。

添」

相關問題