4

インストール プログラムの場合、フォルダー リンクを作成する必要があります。

このために、「[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」です...

4

1 に答える 1