Aggiungi il setup per-utente e fissa il DB nella cartella di installazione
Nuovo installer/PrepStep.iss (Inno Setup 6): installa in %LOCALAPPDATA%\Programs\PrepStep senza diritti di amministratore, con collegamenti nel menu Start al programma e al disinstallatore. Se l'app è già installata chiede se aggiornarla o disinstallarla (Inno da solo aggiornerebbe sempre); con /VERYSILENT aggiorna senza chiedere. Il DB è ora sempre cad_index.db accanto all'eseguibile, cioè nella cartella di installazione: non si ricorda più l'ultimo DB aperto (ultimo_db.txt) e "Apri DB..." vale solo per la sessione. Senza una cartella di lavoro salvata si propone la cartella di installazione invece di quella del DB. Doc aggiornati nello stesso commit: README.md, CLAUDE.md, docs/architettura.md, docs/db-cad-index.md, docs/guida-utente.md, CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
206db85e12
commit
57020f9964
9 files changed
+209
-81
No files matched your search
@@ -0,0 +1,78 @@
|
||||
; Setup per-utente di Cevolani StepPrep: 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 (<Version> nel csproj), tolto l'eventuale "+<commit>" 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=Cevolani StepPrep
|
||||
AppVersion={#AppVersion}
|
||||
AppPublisher=Cevolani
|
||||
; 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=Cevolani StepPrep
|
||||
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
|
||||
|
||||
[Icons]
|
||||
Name: "{autoprograms}\Cevolani StepPrep"; Filename: "{app}\PrepStep.exe"
|
||||
Name: "{autodesktop}\Cevolani StepPrep"; Filename: "{app}\PrepStep.exe"; Tasks: desktopicon
|
||||
Name: "{autoprograms}\Disinstalla Cevolani StepPrep"; Filename: "{uninstallexe}"
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\PrepStep.exe"; Description: "{cm:LaunchProgram,Cevolani StepPrep}"; 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('Cevolani StepPrep è 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;
|
||||
Reference in new issue
Block a user