[[http://www.jrsoftware.org/isdl.php|Site Web]], {{ :prog:inno_setup:innosetup-6.2.0.exe |Archive v6.2.0}} =====Modifier un fichier après installation===== Utilité : modifier un pattern pour le remplacer, par exemple, par le dossier final d'installation. Ajouter après chaque fichier une directive ''AfterInstall''. ''Source: %%"C:\fichier.txt"; DestDir: "{app}"%%; Flags: ignoreversion; AfterInstall: FileReplaceString('fichier.txt') '' Puis, dans une section ''[Code]'' (à créer si inexistante) : procedure FileReplaceString(const FileName: string); va MyFile : TStrings; MyText : string; begin MyFile := TStringList.Create; try MyFile.LoadFromFile(ExpandConstant('{app}') + '\' + FileName); MyText := MyFile.Text; StringChangeEx(MyText, 'C:\BlaBla\', ExpandConstant('{app}') + '\', True); MyFile.Text := MyText; MyFile.SaveToFile(ExpandConstant('{app}') + '\' + FileName); finally MyFile.Free; end; end; =====Modification de la base de registre===== Ici, pour lancer le programme en mode administrateur. [Registry] ; Pour forcer l'exécution en mode administrateur Root: HKLM; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: string; ValueName: "{app}\prog.exe"; ValueData: "RUNASADMIN" =====Création d'un raccourci===== [[https://raw.githubusercontent.com/rgl/elasticsearch-setup/master/shortcut.pas|shortcut.pas]], {{ :prog:inno_setup:shortcut.pas |Archive}} const CLSID_ShellLink = '{00021401-0000-0000-C000-000000000046}'; type IShellLinkW = interface(IUnknown) '{000214F9-0000-0000-C000-000000000046}' procedure Dummy; procedure Dummy2; procedure Dummy3; function GetDescription(pszName: String; cchMaxName: Integer): HResult; function SetDescription(pszName: String): HResult; function GetWorkingDirectory(pszDir: String; cchMaxPath: Integer): HResult; function SetWorkingDirectory(pszDir: String): HResult; function GetArguments(pszArgs: String; cchMaxPath: Integer): HResult; function SetArguments(pszArgs: String): HResult; function GetHotkey(var pwHotkey: Word): HResult; function SetHotkey(wHotkey: Word): HResult; function GetShowCmd(out piShowCmd: Integer): HResult; function SetShowCmd(iShowCmd: Integer): HResult; function GetIconLocation(pszIconPath: String; cchIconPath: Integer; out piIcon: Integer): HResult; function SetIconLocation(pszIconPath: String; iIcon: Integer): HResult; function SetRelativePath(pszPathRel: String; dwReserved: DWORD): HResult; function Resolve(Wnd: HWND; fFlags: DWORD): HResult; function SetPath(pszFile: String): HResult; end; IPersist = interface(IUnknown) '{0000010C-0000-0000-C000-000000000046}' function GetClassID(var classID: TGUID): HResult; end; IPersistFile = interface(IPersist) '{0000010B-0000-0000-C000-000000000046}' function IsDirty: HResult; function Load(pszFileName: String; dwMode: Longint): HResult; function Save(pszFileName: String; fRemember: BOOL): HResult; function SaveCompleted(pszFileName: String): HResult; function GetCurFile(out pszFileName: String): HResult; end; procedure CreateShortCut(const FileName: string; const argument: string; const destination: string); var Obj: IUnknown; SL: IShellLinkW; PF: IPersistFile; begin if IsTaskSelected('shortcutstart') then begin { Create the main ShellLink COM Automation object } Obj := CreateComObject(StringToGuid(CLSID_ShellLink)); { Set the shortcut properties } SL := IShellLinkW(Obj); OleCheck(SL.SetPath(ExpandConstant('{app}') + '\' + FileName)); OleCheck(SL.SetArguments(argument)); OleCheck(SL.SetShowCmd(SW_SHOWNORMAL)); { Save the shortcut } PF := IPersistFile(Obj); OleCheck(PF.Save(ExpandConstant('{commonstartup}') + '\' + destination + '.lnk', True)); end; end; Exemple d'utilisation : AfterInstall: CreateShortCut('runner.exe', ExpandConstant('{app}\file.exe'), 'Raccourci')