[InstallShield]SRCDIR因Release Type不同而Path取不到Disk1的問題

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:從零開始的軟體開發生活

請大家繼續支持 ^_^