1
0

chore: add Inno Setup script for packing.
Some checks failed
Windows CI / msvc-cmake-build (win64_msvc2022_64, x64, 6.9.0, 2022) (push) Has been cancelled

- Add Inno Setup script for packing PPIC on Windows.
- Modify workflow file to use this script file to generate setup program on Windows.
This commit is contained in:
2024-10-12 14:51:47 +08:00
parent df5debb962
commit eeaf2210d2
3 changed files with 203 additions and 2 deletions

View File

@@ -130,8 +130,11 @@ jobs:
robocopy ./dependencies_bin/bin build/bin *.dll
if ErrorLevel 8 (exit /B 1)
copy LICENSE build\bin
copy build\dist\ppic.iss build\bin\ppic.iss
iscc /Q build\bin\ppic.iss
if not ErrorLevel 0 (exit /B 1)
exit /B 0
- uses: actions/upload-artifact@v4
with:
name: "windows-msvc${{ matrix.vs }}-qt${{ matrix.qt_ver }}-cmake-package"
path: build/bin/*
name: "ppic-windows-msvc${{ matrix.vs }}-qt${{ matrix.qt_ver }}-cmake-setup"
path: build/bin/ppic-setup.exe

View File

@@ -217,6 +217,11 @@ if (WIN32)
set_target_properties(${EXE_NAME} PROPERTIES
WIN32_EXECUTABLE TRUE
)
configure_file(
${CMAKE_CURRENT_LIST_DIR}/dist/ppic.iss.in
${CMAKE_CURRENT_BINARY_DIR}/dist/ppic.iss
@ONLY
)
elseif (APPLE)
set_source_files_properties(assets/icons/app-icon.icns PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"

193
dist/ppic.iss.in vendored Normal file
View File

@@ -0,0 +1,193 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
; YYC MARK:
; This file MUST be placed with "ppic.exe" before compiling this script.
; Otherwise exception will be thrown.
#define MyAppName "Pineapple Pictures"
#define MyAppVersion "@PROJECT_VERSION@"
#define MyAppPublisher "BLumia"
#define MyAppURL "https://github.com/BLumia/pineapple-pictures"
#define MyAppExeName "ppic.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={{B5291320-FE7C-4069-BF87-A0AC327FCD20}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\pineapple-pictures
UninstallDisplayIcon={app}\{#MyAppExeName}
; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run
; on anything but x64 and Windows 11 on Arm.
ArchitecturesAllowed=x64compatible
; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the
; install be done in "64-bit mode" on x64 or Windows 11 on Arm,
; meaning it should use the native 64-bit Program Files directory and
; the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64compatible
ChangesAssociations=yes
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile=LICENSE
; Uncomment the following line to run in non administrative install mode (install for current user only).
;PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
OutputDir=.
OutputBaseFilename=ppic-setup
SolidCompression=yes
WizardStyle=modern
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[CustomMessages]
english.Other=Other:
english.AssociateWithFiles=Associate %1 with its supported file types.
english.InstallVcRedist=Installing Microsoft Visual C++ Redistributable...
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "associatewithfiles"; Description: "{cm:AssociateWithFiles,{#MyAppName}}"; GroupDescription: "{cm:Other}"
[Files]
Source: "{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "*"; Excludes: "vc_redist.x64.exe,ppic-setup.exe,ppic.iss"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "vc_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Registry]
; YYC MARK:
; When adding new supported file estensions, pleasse copy following comment and de-comment it.
; Then search "wtf" (case insensitive) inside it and replace it (preserve word case) with your desired file extension.
; ; .wtf File Type
; Root: HKA; Subkey: "Software\Classes\.wtf\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.wtf"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
; Root: HKA; Subkey: "Software\Classes\PineapplePictures.wtf"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures WTF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
; Root: HKA; Subkey: "Software\Classes\PineapplePictures.wtf\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
; Root: HKA; Subkey: "Software\Classes\PineapplePictures.wtf\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .jpg File Type
Root: HKA; Subkey: "Software\Classes\.jpg\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.jpg"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jpg"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures JPG Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jpg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jpg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .jfif File Type
Root: HKA; Subkey: "Software\Classes\.jfif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.jfif"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jfif"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures JFIF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jfif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jfif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .gif File Type
Root: HKA; Subkey: "Software\Classes\.gif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.gif"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.gif"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures GIF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.gif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.gif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .bmp File Type
Root: HKA; Subkey: "Software\Classes\.bmp\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.bmp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.bmp"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures BMP Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.bmp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.bmp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .png File Type
Root: HKA; Subkey: "Software\Classes\.png\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.png"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.png"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures PNG Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.png\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.png\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .ico File Type
Root: HKA; Subkey: "Software\Classes\.ico\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.ico"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.ico"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures ICO Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.ico\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.ico\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .jpeg File Type
Root: HKA; Subkey: "Software\Classes\.jpeg\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.jpeg"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jpeg"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures JPEG Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jpeg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.jpeg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .tif File Type
Root: HKA; Subkey: "Software\Classes\.tif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.tif"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.tif"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures TIF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.tif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.tif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .tiff File Type
Root: HKA; Subkey: "Software\Classes\.tiff\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.tiff"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.tiff"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures TIFF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.tiff\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.tiff\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .webp File Type
Root: HKA; Subkey: "Software\Classes\.webp\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.webp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.webp"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures WEBP Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.webp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.webp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .psd File Type
Root: HKA; Subkey: "Software\Classes\.psd\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.psd"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.psd"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures PSD Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.psd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.psd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .svg File Type
Root: HKA; Subkey: "Software\Classes\.svg\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.svg"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.svg"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures SVG Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.svg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.svg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .kra File Type
Root: HKA; Subkey: "Software\Classes\.kra\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.kra"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.kra"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures KRA Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.kra\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.kra\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .xcf File Type
Root: HKA; Subkey: "Software\Classes\.xcf\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.xcf"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.xcf"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures XCF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.xcf\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.xcf\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .avif File Type
Root: HKA; Subkey: "Software\Classes\.avif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.avif"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.avif"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures AVIF Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.avif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.avif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .qoi File Type
Root: HKA; Subkey: "Software\Classes\.qoi\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.qoi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.qoi"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures QOI Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.qoi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.qoi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .apng File Type
Root: HKA; Subkey: "Software\Classes\.apng\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.apng"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.apng"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures APNG Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.apng\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.apng\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
; .exr File Type
Root: HKA; Subkey: "Software\Classes\.exr\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.exr"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.exr"; ValueType: string; ValueName: ""; ValueData: "Pineapple Pictures EXR Image"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.exr\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\PineapplePictures.exr\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: associatewithfiles
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\vc_redist.x64.exe"; Parameters: "/install /quiet /norestart"; StatusMsg: "{cm:InstallVcRedist}"; Flags: waituntilterminated