インストール プログラムの場合、フォルダー リンクを作成する必要があります。
このために、「[Dirs]」セクションを使用してターゲット フォルダーを作成します。問題ない。
次に、'[Code]' セクションで、関数 'CurStepChanged(ssPostInstall)' を使用して、一時的にインストールされたファイルを読み取り、作成するフォルダー リンクのリストを取得します。ファイルの各行には、ターゲット フォルダーのパス名とリンク パス名が含まれています... Inno Setup 定数を使用します。各値が読み取られ、「文字列」変数として格納されます。
これらの文字列変数を 'ExpandConstant(lLinkTarg)' に渡すと、定数名のいずれかで内部実行時エラーが発生します。
文字列の内容をコピーして「ExpandConstant('{#gRepNasSvg}\UT{code:getProjetc}\Docs')」呼び出しに貼り付けると、機能します...
私が間違っていることについてのヒントはありますか?
前もって感謝します。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{code:getProjetc}\Docs」です...