; ────────────────────────────────────────────── ; WGSecure (WGS) — Script Inno Setup ; Installeur Windows complet : WGSecure + WireGuard + ; Visual C++ Redistributable, chacun installé en silence si absent. ; ────────────────────────────────────────────── #define MyAppName "WGSecure" #define MyAppVersion "0.7.10" #define MyAppPublisher "WGSecure" #define MyAppExeName "wgsecure.exe" [Setup] AppId={{8F3B2C1A-7D4E-4A9B-9C6F-1E2D3F4A5B6C} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={autopf}\{#MyAppName} DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes OutputDir=dist OutputBaseFilename=wgsecure-{#MyAppVersion}-setup Compression=lzma2 SolidCompression=yes ArchitecturesAllowed=x64compatible ArchitecturesInstallIn64BitMode=x64compatible PrivilegesRequired=admin [Languages] Name: "french"; MessagesFile: "compiler:Languages\French.isl" [Files] Source: "dist\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion ; VC++ Redistributable x64 — téléchargé automatiquement par `make installer-deps` : ; https://aka.ms/vs/17/release/vc_redist.x64.exe → installer\VC_redist.x64.exe Source: "installer\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall ; WireGuard pour Windows — prérequis à WGSecure (fournit wg.exe, le pilote ; tunnel et le service WireGuardTunnel$ que wireguard.py pilote). Téléchargé ; automatiquement par `make installer-deps` : ; https://download.wireguard.com/windows-client/wireguard-installer.exe ; → installer\wireguard-installer.exe Source: "installer\wireguard-installer.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" [Run] ; Installation silencieuse du VC++ Redistributable si absent (corrige "Failed to load Python DLL: python312.dll") Filename: "{tmp}\VC_redist.x64.exe"; Parameters: "/install /quiet /norestart"; StatusMsg: "Installation du composant Visual C++ Redistributable…"; Check: VCRedistNeedsInstall ; L'installeur officiel WireGuard s'exécute déjà sans assistant (juste une ; fenêtre de progression) : notre propre installeur tourne en admin ; (PrivilegesRequired=admin ci-dessus), donc pas d'UAC supplémentaire non plus. ; `waituntilterminated` : l'app ne doit pas démarrer avant que wg.exe existe. Filename: "{tmp}\wireguard-installer.exe"; StatusMsg: "Installation de WireGuard…"; Check: WireGuardNeedsInstall; Flags: waituntilterminated Filename: "{app}\{#MyAppExeName}"; Description: "Lancer {#MyAppName}"; Flags: nowait postinstall skipifsilent [Code] function VCRedistNeedsInstall: Boolean; var Version: String; begin // Clé présente si VC++ 2015-2022 x64 (v14+) déjà installé Result := not RegQueryStringValue(HKLM64, 'SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\X64', 'Version', Version); end; function WireGuardNeedsInstall: Boolean; begin // WireGuard s'installe toujours dans le Program Files 64 bits, quelle que // soit l'architecture de WGSecure : {pf} y pointe bien puisque // ArchitecturesInstallIn64BitMode=x64compatible ci-dessus. Result := not FileExists(ExpandConstant('{pf}\WireGuard\wireguard.exe')); end;