對於安裝程序,我需要創建文件夾鏈接。如何使用Pascal Inno Setup使用字符串變量ExpandConstant?
爲此,我使用'[Dirs]'部分創建目標文件夾。沒問題。
然後,在「[代碼]」部分中,使用函數「CurStepChanged(ssPostInstall)」,I讀取臨時安裝的文件,以獲得夾鏈接來創建的列表。文件的每一行都包含一個目標文件夾路徑名和一個鏈接路徑名...使用Inno Setup常量。 每個值都以「String」變量的形式讀取和存儲。
當我通過這些字符串變量「ExpandConstant(lLinkTarg)」,我得到任何常量名的內部運行時錯誤。
如果我複製粘貼的字符串內容爲 'ExpandConstant('{#gRepNasSvg} \ {UT代碼:getProjetc} \文件 ')' 調用,那麼它的工作原理...
任何暗示什麼,我做錯了 ?
在此先感謝。 L.
procedure CurStepChanged(CurStep: TSetupStep);
var
lFileName: String;
lLinkList: TArrayOfString;
lIndex: Integer;
lLinkLine: String;
lLinkName: String;
lLinkTarg: String;
lSepPos: Integer;
begin
// Après l'étape d'installation...
if CurStep = ssPostInstall then
begin
// Si le fichier listant les liens à créer existe...
lFileName := ExpandConstant('{tmp}') + '\' + ExpandConstant('{#gFicListeLiens}');
if FileExists(lFileName) then
begin
// Lecture du contenu du fichier.
LoadStringsFromFile(lFileName, lLinkList);
// Pour chaque ligne lue...
for lIndex := 0 to GetArrayLength(lLinkList) - 1 do
begin
// Lecture de la ligne.
lLinkLine := Trim(lLinkList[lIndex]);
// Si ce n'est pas un commentaire...
if (Length(lLinkLine) > 0) and (lLinkLine[1] <> ';') then
begin
// Recherche du séparateur.
lSepPos := Pos('>', lLinkLine);
if lSepPos > 0 then
begin
// Get target location.
lLinkTarg := Trim(Copy(lLinkLine, 1, lSepPos - 1));
MsgBox(lLinkTarg, mbInformation, MB_OK);
// NEXT LINE FAILS !
lLinkTarg := ExpandConstant(lLinkTarg) ;
MsgBox(lLinkTarg, mbInformation, MB_OK);
// Get link location.
lLinkName := Trim(Copy(lLinkLine, lSepPos + 1, Length(lLinkLine) - lSepPos));
MsgBox(lLinkName, mbInformation, MB_OK);
end
end
end
end
end
end;
一些我忘記的東西。
鏈接描述變量的形式是 '{#gRepNasSvg} \ {UT代碼:getProjetc} \文件' ......