SRCDIR因Release Type不同的問題
小弟之前使用InstallShield包裝安裝程式時,發現如果Release Type使用Uncompress時,SRCDIR的路徑就是安裝檔的路徑(Disk1),如果使用Compress時,SRCDIR的路徑就會是安裝程式解開放到Temp目錄的那個路徑。請參考Q105487: PRB: SourceDir and SRCDIR Resolve to a Location Under Temp Directory
所以如果要取得真正的Disk1的Path,就要使用 MsiGetProperty 來取得 SETUPEXEDIR,程式可參考installsheild 打包(勇哥每天自省的成长日志)。如下的Code,
function OnBegin()
NUMBER nvSize, nReturnValue;
STRING svValue;
STRING SETUPEXEDIR[MAX_PATH + 1];
NUMBER nBuffer;
begin
// TO DO: you may change default non-UI setting, for example
//SRCINSTALLDIR
// You may also perform your custom initialization steps, check requirements, etc.
MessageBox(SRCDISK, SEVERE );
MessageBox(SRCDIR, SEVERE );
MessageBox(DISK1TARGET, SEVERE );
nBuffer = MAX_PATH + 1; // initialize size buffer before calling MsiGetProperty
MsiGetProperty(ISMSI_HANDLE, "SETUPEXEDIR", SETUPEXEDIR, nBuffer);
// for testing: display the variable's value
MessageBox("SETUPEXEDIR = " + SETUPEXEDIR, INFORMATION);
end;
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^