#define sysfolder "system" #define version GetEnv("ELLIEBOT_INSTALL_VERSION") #define target "win-x64" #define platform "net8.0" [Setup] AppName = {param:botname|EllieBot} AppVersion={#version} AppPublisher=Toastie_t0ast DefaultDirName={param:installpath|{commonpf}\EllieBot} DefaultGroupName=EllieBot UninstallDisplayIcon={app}\{#sysfolder}\ellie_icon.ico Compression=lzma2 SolidCompression=yes UsePreviousLanguage=no UsePreviousSetupType=no UsePreviousAppDir=no OutputDir=ellie-installers/{#version}/ OutputBaseFilename=ellie-setup-{#version} AppReadmeFile=https://commands.elliebot.net/ ArchitecturesInstallIn64BitMode=x64 DisableWelcomePage=yes DisableDirPage=yes DisableFinishedPage=yes DisableReadyMemo=yes DisableProgramGroupPage=yes WizardStyle=modern UpdateUninstallLogAppName=no CreateUninstallRegKey=no Uninstallable=no [Files] ;install Source: "src\EllieBot\bin\Release\{#platform}\{#target}\publish\*"; DestDir: "{app}\{#sysfolder}"; Permissions: users-full; Flags: recursesubdirs onlyifdoesntexist ignoreversion createallsubdirs; Excludes: "*.pdb, *.db" ;reinstall - Copy all files, but don't overwrite any data files because users will lose their customization if they don't have a backup Source: "src\EllieBot\bin\Release\{#platform}\{#target}\publish\*"; DestDir: "{app}\{#sysfolder}"; Permissions: users-full; Flags: recursesubdirs ignoreversion onlyifdestfileexists createallsubdirs; Excludes: "*.pdb, *.db, data\*, creds.yml"; Source: "src\EllieBot\bin\Release\{#platform}\{#target}\publish\data\*"; DestDir: "{app}\{#sysfolder}\data"; Permissions: users-full; Flags: recursesubdirs onlyifdoesntexist createallsubdirs; ; overwrite strings Source: "src\EllieBot\bin\Release\{#platform}\{#target}\publish\strings\*"; DestDir: "{app}\{#sysfolder}\strings"; Permissions: users-full; Flags: recursesubdirs ignoreversion onlyifdestfileexists createallsubdirs; [Dirs] Name:"{app}\{#sysfolder}\data"; Permissions: everyone-modify Name:"{app}\{#sysfolder}"; Permissions: everyone-modify ; [Run] ; Filename: "https://docs.elliebot.net/ellie/features/yml-explained/"; Flags: postinstall shellexec runasoriginaluser; Description: "Open setup guide" ; Filename: "{app}\{#sysfolder}\creds.yml"; Flags: postinstall shellexec runasoriginaluser; Description: "Open creds file" [Icons] ; for pretty install directory Name: "{app}\EllieBot"; Filename: "{app}\{#sysfolder}\EllieBot.exe"; IconFilename: "{app}\{#sysfolder}\ellie_icon.ico" Name: "{app}\data"; Filename: "{app}\{#sysfolder}\data" Name: "{app}\strings"; Filename: "{app}\{#sysfolder}\strings" ; desktop shortcut Name: "{commondesktop}\{#SetupSetting("AppName")}"; Filename: "{app}\EllieBot"; [Code] function GetFileName(const AFileName: string): string; begin Result := ExpandConstant('{app}\{#sysfolder}\data\' + AFileName); end; procedure CurStepChanged(CurStep: TSetupStep); begin if (CurStep = ssPostInstall) then begin FileCopy(GetFileName('creds_example.yml'), GetFileName('creds.yml'), True); end; end;