Files

92 lines
2.8 KiB
Plaintext

#define AppName "QtDesktopPet"
#ifndef AppVersion
#define AppVersion "0.1.0"
#endif
#ifndef SourceDir
#define SourceDir "..\dist\QtDesktopPet-0.1.0-windows-x64"
#endif
#ifndef OutputDir
#define OutputDir "..\dist\installer"
#endif
[Setup]
AppId={{B37D912A-7354-4D67-AF75-5EFA7E80D605}
AppName={#AppName}
AppVersion={#AppVersion}
AppPublisher=Make
DefaultDirName={localappdata}\Programs\{#AppName}
DefaultGroupName={#AppName}
DisableProgramGroupPage=yes
OutputDir={#OutputDir}
OutputBaseFilename=QtDesktopPet-{#AppVersion}-windows-x64-setup
Compression=lzma2
SolidCompression=yes
WizardStyle=modern
PrivilegesRequired=lowest
ArchitecturesAllowed=x64compatible
ArchitecturesInstallIn64BitMode=x64compatible
SetupIconFile=..\resources\icons\app_icon.ico
UninstallDisplayIcon={app}\QtDesktopPet.exe
[Tasks]
Name: "desktopicon"; Description: "Create a desktop shortcut"; GroupDescription: "Additional shortcuts:"; Flags: unchecked
Name: "startup"; Description: "开机自启动"; GroupDescription: "Additional options:"; Flags: unchecked
[Files]
Source: "{#SourceDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "{#AppName}"; ValueData: """{app}\QtDesktopPet.exe"""; Flags: uninsdeletevalue; Tasks: startup
[Icons]
Name: "{group}\QtDesktopPet"; Filename: "{app}\QtDesktopPet.exe"; WorkingDir: "{app}"
Name: "{group}\Uninstall QtDesktopPet"; Filename: "{uninstallexe}"
Name: "{userdesktop}\QtDesktopPet"; Filename: "{app}\QtDesktopPet.exe"; WorkingDir: "{app}"; Tasks: desktopicon
[Run]
Filename: "{app}\QtDesktopPet.exe"; Description: "Launch QtDesktopPet"; Flags: nowait postinstall skipifsilent
[Code]
var
DeleteUserDataAfterUninstall: Boolean;
procedure DeleteDirIfExists(Path: String);
begin
if DirExists(Path) then
begin
DelTree(Path, True, True, True);
end;
end;
function InitializeUninstall(): Boolean;
var
Answer: Integer;
begin
Result := True;
DeleteUserDataAfterUninstall := False;
Answer := MsgBox(
'是否同时删除 QtDesktopPet 的用户配置、导入角色、聊天记录和日志?' + #13#10 + #13#10 +
'这会删除当前用户的 QtDesktopPet 数据,操作不可恢复。',
mbConfirmation,
MB_YESNO);
if Answer = IDYES then
begin
DeleteUserDataAfterUninstall := True;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if (CurUninstallStep = usPostUninstall) and DeleteUserDataAfterUninstall then
begin
DeleteDirIfExists(ExpandConstant('{userappdata}\QtDesktopPet\QtDesktopPet'));
DeleteDirIfExists(ExpandConstant('{localappdata}\QtDesktopPet\QtDesktopPet'));
end;
if CurUninstallStep = usPostUninstall then
begin
RegDeleteValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Run', '{#AppName}');
end;
end;