Files
raven/dist/install/windows/x64/standalone.iss
John Cardinal e9b79242fd case 4579 - Windows installers: program folder no longer writable by all users
Both installers drop users-modify from the program folder (and local-postgres
in the single-user installer) and run icacls to remove the Users group's own
grants (by SID) from the program folder after copying files, so upgrades over
8.2.4 lose them too. The data folder keeps users-modify and config.json stays
readable by local users (the running account is not known at install time);
both documented in the single-user and LAN install pages. Changelog updated.
F2 fixed (write access), the rest accepted. Deferred: report on a missing
record fails with a generic error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 14:39:00 -07:00

103 lines
6.1 KiB
Plaintext

; Basic preconfigured ayanova installer for super easy config
; single user or lan only, built in postgres
; external to lan requires different config
#define MyAppName "AyaNova"
#define MyAppVersion "8.3.0"
#define MyAppPublisher "Ground Zero Tech-Works, Inc."
#define MyAppURL "https://ayanova.com/"
#define MyAppLauncherExeName "ayanova-launcher.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{B2BB79DB-0690-497C-B92B-955F7B468429}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\ayanova
DisableProgramGroupPage=yes
LicenseFile=C:\data\code\raven\dist\assets\license.rtf
OutputDir=C:\data\code\raven\dist\installers
OutputBaseFilename=ayanova-windows-x64-single-setup
SetupIconFile=C:\data\code\raven\graphics\logo.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64
;Force user to install to set location so that they don't break the backup and stuff
;this prevents users from randomly picking a weird location and then requiring support to edit the config.json file to set the backup path etc
DisableDirPage=yes
AlwaysShowDirOnReadyPage=yes
[Tasks]
;commented out to force desktop icon, no prompt Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "C:\data\code\raven\dist\win-x64\ayanova\standalone\AyaNova.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\data\code\raven\dist\win-x64\ayanova\standalone\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\data\code\raven\dist\win-x64\launcher\config.json"; DestDir: "{app}"; Flags: ignoreversion confirmoverwrite
Source: "C:\data\code\raven\dist\win-x64\launcher\*"; DestDir: "{app}\launcher"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\data\code\raven\dist\win-x64\postgres-standalone\*"; DestDir: "{app}\local-postgres"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\data\code\raven\dist\win-x64\postgres-empty-database\*"; DestDir: "{commonappdata}\ayanova\database"; Permissions: users-modify; Flags: ignoreversion recursesubdirs createallsubdirs onlyifdoesntexist uninsneveruninstall
[Dirs]
;Name: "{app}\.local-chromium";Permissions: users-modify;Flags: uninsalwaysuninstall
Name: "{commonappdata}\ayanova";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\logs";Permissions: users-modify;Flags: uninsneveruninstall
; Empty folders PostgreSQL 14 needs in a new database. Git does not keep empty folders, so dist\win-x64\postgres-empty-database
; (checked out from Git) lacks them and the server will not start on a fresh install. Already present on an upgrade.
Name: "{commonappdata}\ayanova\database\pg_commit_ts";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_dynshmem";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_logical\mappings";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_logical\snapshots";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_notify";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_replslot";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_serial";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_snapshots";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_stat";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_stat_tmp";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_tblspc";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_twophase";Permissions: users-modify;Flags: uninsneveruninstall
Name: "{commonappdata}\ayanova\database\pg_wal\archive_status";Permissions: users-modify;Flags: uninsneveruninstall
[UninstallDelete]
;Type: filesandordirs; Name: "{app}\.local-chromium\*"
Type: filesandordirs; Name: "{app}\Chrome"
Type: filesandordirs; Name: "{app}\ChromeHeadlessShell"
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\launcher\ayanova-launcher.exe";
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\launcher\ayanova-launcher.exe";
;removed this from above line to force desktop icon Tasks: desktopicon
[Run]
; case 4579: the program folder is no longer writable by all local users (nothing writes there, data is under
; {commonappdata}\ayanova). Upgrades over 8.2.4 or older still carry the old grant, so remove the Users group's own
; rights (by SID, the group name is translated) from the program folder and everything in it; inherited read rights stay
Filename: "{sys}\icacls.exe"; Parameters: """{app}"" /remove:g *S-1-5-32-545 /T /C /Q"; Flags: runhidden waituntilterminated
Filename: "{app}\launcher\ayanova-launcher.exe"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
if MsgBox('Do you want to delete all AyaNova database, attachment and log files?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then
begin
if MsgBox('Are you sure you want to **PERMANENTLY** delete all AyaNova data files?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then
begin
DelTree(ExpandConstant('{commonappdata}\ayanova'), True, True, True);
end;
end;
end;
end;