; Setup per-utente di PrepStep - Cevolani: installa in %LOCALAPPDATA%\Programs\PrepStep ; senza richiedere diritti di amministratore. ; Prima: dotnet publish (vedi README), poi: iscc installer\PrepStep.iss #define Exe "..\PrepStep\publish\PrepStep.exe" ; Versione letta dall'exe ( nel csproj), tolto l'eventuale "+" di .NET. #define AppVersion GetStringFileInfo(Exe, "ProductVersion") #if Pos("+", AppVersion) > 0 #define AppVersion Copy(AppVersion, 1, Pos("+", AppVersion) - 1) #endif ; Non cambiare AppGuid: è quello che fa riconoscere a Windows gli aggiornamenti come la stessa app. #define AppGuid "FAC1B760-4735-422F-86F0-888484CF2830" [Setup] AppId={{{#AppGuid}} AppName=PrepStep - Cevolani AppVersion={#AppVersion} AppPublisher=Cevolani AppCopyright=Copyright (c) 2026 Davide Grilli ; Con PrivilegesRequired=lowest {autopf} diventa %LOCALAPPDATA%\Programs. PrivilegesRequired=lowest DefaultDirName={autopf}\PrepStep DisableDirPage=yes DisableProgramGroupPage=yes ArchitecturesAllowed=x64compatible ArchitecturesInstallIn64BitMode=x64compatible SetupIconFile=..\PrepStep\app.ico UninstallDisplayIcon={app}\PrepStep.exe UninstallDisplayName=PrepStep - Cevolani OutputDir=Output OutputBaseFilename=PrepStep-Setup-{#AppVersion} Compression=lzma2 SolidCompression=yes [Languages] Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "{#Exe}"; DestDir: "{app}"; Flags: ignoreversion [InstallDelete] ; Collegamenti col vecchio nome dell'app (fino a 0.9.0), altrimenti restano nel menu Start. Type: files; Name: "{autoprograms}\Cevolani StepPrep.lnk" Type: files; Name: "{autoprograms}\Disinstalla Cevolani StepPrep.lnk" Type: files; Name: "{autodesktop}\Cevolani StepPrep.lnk" [Icons] Name: "{autoprograms}\PrepStep - Cevolani"; Filename: "{app}\PrepStep.exe" Name: "{autodesktop}\PrepStep - Cevolani"; Filename: "{app}\PrepStep.exe"; Tasks: desktopicon Name: "{autoprograms}\Disinstalla PrepStep - Cevolani"; Filename: "{uninstallexe}" [Run] Filename: "{app}\PrepStep.exe"; Description: "{cm:LaunchProgram,PrepStep - Cevolani}"; Flags: nowait postinstall skipifsilent [Code] { Se l'app è già installata, chiede se aggiornarla o disinstallarla (Inno da solo aggiornerebbe sempre, senza offrire la disinstallazione). In modalità silenziosa aggiorna senza chiedere. } function InitializeSetup(): Boolean; var Disinstallatore: String; Codice: Integer; begin Result := True; if WizardSilent then Exit; if not RegQueryStringValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{' + '{#AppGuid}' + '}_is1', 'UninstallString', Disinstallatore) then Exit; case MsgBox('PrepStep - Cevolani è già installato.' + #13#10#13#10 + 'Sì: aggiorna / reinstalla' + #13#10 + 'No: disinstalla' + #13#10 + 'Annulla: esci senza fare nulla', mbConfirmation, MB_YESNOCANCEL) of IDNO: begin Exec(RemoveQuotes(Disinstallatore), '', '', SW_SHOW, ewWaitUntilTerminated, Codice); Result := False; end; IDCANCEL: Result := False; end; end;