Compare commits

..
5 Commits
Author SHA1 Message Date
yyc12345 014372b9c0 fix: fix windows CI no label error
- fix windows CI no label error
- add lost goto in windows CI
- uniform goto style
2026-09-25 17:27:05 +08:00
yyc12345 2131f4ffa3 feat: introduce InnoSetup for windows package 2026-09-25 17:13:27 +08:00
yyc12345 1cb4d55335 refactor: use metaglot to take macos bundle i18n over
- use metaglot for macos bundle i18n
- set macos icon from PUBLIC to PRIVATE
- remove CFBundleLongVersionString from Info.plist
2026-09-24 16:05:20 +08:00
yyc12345 9b67599979 chore: reduce the length of the error message in cmake 2026-09-22 17:15:49 +08:00
yyc12345 6ff4330f26 chore: move windows icos resources location 2026-09-22 17:13:59 +08:00
18 changed files with 628 additions and 42 deletions
+13 -7
View File
@@ -65,7 +65,7 @@ jobs:
curl -fsSL -o libavif-v1_3_0.zip https://github.com/AOMediaCodec/libavif/archive/v1.3.0.zip
7z x libavif-v1_3_0.zip -y -o"dependencies_src"
ren .\dependencies_src\libavif-1.3.0 libavif || goto :error
cmake ./dependencies_src/libavif -Bbuild_dependencies/libavif -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DAVIF_CODEC_AOM=SYSTEM -DAVIF_CODEC_AOM_DECODE=ON -DAVIF_CODEC_AOM_ENCODE=ON -DAVIF_LIBYUV=LOCAL
cmake ./dependencies_src/libavif -Bbuild_dependencies/libavif -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DAVIF_CODEC_AOM=SYSTEM -DAVIF_CODEC_AOM_DECODE=ON -DAVIF_CODEC_AOM_ENCODE=ON -DAVIF_LIBYUV=LOCAL || goto :error
cmake --build build_dependencies/libavif --config Release --target=install || goto :error
echo ::endgroup::
echo ::group::===== expat =====
@@ -92,17 +92,23 @@ jobs:
echo ::endgroup::
:: ------ app ------
echo ::group::===== App (Build'n'Install) =====
cmake -Bbuild .
cmake --build build --config Release
cmake --install build --config Release --prefix "%PWD%\build"
cmake -Bbuild . || goto :error
cmake --build build --config Release || goto :error
cmake --install build --config Release --prefix "%PWD%\build" || goto :error
echo ::endgroup::
:: ------ pkg ------
windeployqt --verbose=2 --no-compiler-runtime --no-quick-import --no-translations --no-network --no-opengl-sw --no-system-d3d-compiler --no-system-dxc-compiler --skip-plugin-types tls,networkinformation build\bin\ppic.exe
robocopy ./dependencies_bin/bin build/bin *.dll
if ErrorLevel 8 (exit /B 1)
if ErrorLevel 8 goto :error
copy LICENSE build\bin
copy build\inno-metadata\ppic.iss build\bin\ppic.iss
robocopy build\inno-metadata\Strings build\bin\Strings
if ErrorLevel 8 goto :error
iscc /Q build\bin\ppic.iss || goto :error
exit /B 0
:error
exit /B 1
- uses: actions/upload-artifact@v6
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
+55 -7
View File
@@ -105,6 +105,7 @@ if (NOT UV_EXECUTABLE)
endif ()
if (WIN32)
# Setup Windows RC files
set (PPIC_RC_TEMPLATE_FILE ${CMAKE_CURRENT_BINARY_DIR}/pineapple-pictures.rc.in)
execute_process (
COMMAND ${UV_EXECUTABLE} tool run metaglot render rc
@@ -115,7 +116,7 @@ if (WIN32)
RESULT_VARIABLE METAGLOT_RESULT
)
if (NOT METAGLOT_RESULT EQUAL 0)
message (FATAL_ERROR "Failed to generate pineapple-pictures.rc.in via MetaGlot (exit code: ${METAGLOT_RESULT}). If it is not installed yet, run: uv tool install git+https://github.com/SarasasChipWorkshop/metaglot.git")
message (FATAL_ERROR "Failed to generate Windows RC file template via MetaGlot (exit code: ${METAGLOT_RESULT}).")
endif ()
configure_file (${PPIC_RC_TEMPLATE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/pineapple-pictures.rc @ONLY)
@@ -228,20 +229,67 @@ if (WIN32)
set_target_properties(${EXE_NAME} PROPERTIES
WIN32_EXECUTABLE TRUE
)
# Setup Inno Setup script file
set (PPIC_INNO_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/inno-metadata)
execute_process (
COMMAND ${UV_EXECUTABLE} tool run metaglot render inno
--manifest ${CMAKE_SOURCE_DIR}/dist/ppic.iss.in.toml
--po ${CMAKE_SOURCE_DIR}/locales/inno/*.po
--iss-template ${CMAKE_SOURCE_DIR}/dist/ppic.iss.in.liquid
--isl-template ${CMAKE_SOURCE_DIR}/dist/ppic.isl.liquid
--iss-path ppic.iss.in
--isl-path "Strings/{{ lang }}.isl"
--output ${PPIC_INNO_OUTPUT_DIR}
RESULT_VARIABLE METAGLOT_INNO_RESULT
)
if (NOT METAGLOT_INNO_RESULT EQUAL 0)
message (FATAL_ERROR "Failed to render Inno Setup script via MetaGlot (exit code: ${METAGLOT_INNO_RESULT}).")
endif ()
configure_file (${PPIC_INNO_OUTPUT_DIR}/ppic.iss.in ${PPIC_INNO_OUTPUT_DIR}/ppic.iss @ONLY)
elseif (APPLE)
# Include icon to project
set_source_files_properties(dist/sarasacw-picture.icns PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
target_sources(${EXE_NAME} PUBLIC dist/sarasacw-picture.icns)
target_sources(${EXE_NAME} PRIVATE dist/sarasacw-picture.icns)
# Setup Info.plist related directory.
set (PPIC_PLIST_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/plist-metadata)
# Render Info.plist and its strings.
execute_process (
COMMAND ${UV_EXECUTABLE} tool run metaglot render plist
--manifest ${CMAKE_SOURCE_DIR}/dist/Info.plist.in.toml
--po ${CMAKE_SOURCE_DIR}/locales/plist/*.po
--plist-template ${CMAKE_SOURCE_DIR}/dist/Info.plist.in.liquid
--strings-template ${CMAKE_SOURCE_DIR}/dist/InfoPlist.strings.liquid
--plist-path Info.plist.in
--strings-path "Resources/{{ lang }}.lproj/InfoPlist.strings"
--output ${PPIC_PLIST_OUTPUT_DIR}
RESULT_VARIABLE METAGLOT_PLIST_RESULT
)
if (NOT METAGLOT_PLIST_RESULT EQUAL 0)
message (FATAL_ERROR "Failed to render Info.plist metadata via MetaGlot (exit code: ${METAGLOT_PLIST_RESULT}).")
endif ()
# Include these to project.
file (GLOB PPIC_PLIST_STRINGS_FILES ${PPIC_PLIST_OUTPUT_DIR}/Resources/*.lproj/InfoPlist.strings)
foreach (plist_strings_file ${PPIC_PLIST_STRINGS_FILES})
get_filename_component (plist_lproj_dir ${plist_strings_file} DIRECTORY)
get_filename_component (plist_lproj_name ${plist_lproj_dir} NAME)
set_source_files_properties (${plist_strings_file} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources/${plist_lproj_name}"
)
target_sources (${EXE_NAME} PRIVATE ${plist_strings_file})
endforeach ()
# See https://cmake.org/cmake/help/v3.15/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.html
set_target_properties(${EXE_NAME} PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/dist/MacOSXBundleInfo.plist.in
MACOSX_BUNDLE_BUNDLE_NAME "Pineapple Pictures"
MACOSX_BUNDLE_INFO_PLIST ${PPIC_PLIST_OUTPUT_DIR}/Info.plist.in
MACOSX_BUNDLE_INFO_STRING "${PROJECT_VERSION}, Copyright (C) 2026 Gary Wang"
MACOSX_BUNDLE_GUI_IDENTIFIER net.blumia.pineapple-pictures
MACOSX_BUNDLE_ICON_FILE sarasacw-picture.icns # contains the .icns file name, *without* the path.
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
)
elseif (UNIX)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
@@ -265,7 +313,7 @@ elseif (UNIX)
RESULT_VARIABLE METAGLOT_DESKTOP_RESULT
)
if (NOT METAGLOT_DESKTOP_RESULT EQUAL 0)
message (FATAL_ERROR "Failed to generate net.blumia.pineapple-pictures.desktop via MetaGlot (exit code: ${METAGLOT_DESKTOP_RESULT}). If it is not installed yet, run: uv tool install git+https://github.com/SarasasChipWorkshop/metaglot.git")
message (FATAL_ERROR "Failed to generate .desktop via MetaGlot (exit code: ${METAGLOT_DESKTOP_RESULT}).")
endif ()
install (
@@ -284,7 +332,7 @@ elseif (UNIX)
RESULT_VARIABLE METAGLOT_METAINFO_RESULT
)
if (NOT METAGLOT_METAINFO_RESULT EQUAL 0)
message (FATAL_ERROR "Failed to generate net.blumia.pineapple-pictures.metainfo.xml via MetaGlot (exit code: ${METAGLOT_METAINFO_RESULT}). If it is not installed yet, run: uv tool install git+https://github.com/SarasasChipWorkshop/metaglot.git")
message (FATAL_ERROR "Failed to generate .metainfo.xml via MetaGlot (exit code: ${METAGLOT_METAINFO_RESULT}).")
endif ()
install (
+16 -23
View File
@@ -14,10 +14,8 @@
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<string>{{ default.strings.app_name | xml_escape }}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -29,28 +27,23 @@
<key>CSResourcesFileMapped</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<!-- FIXME: this list can't be automatically generated by Qt's CMake API, don't know why. -->
<string>MIT/Expat License - Copyright (C) 2026 Gary Wang</string>
<!--
CFBundleLocalizations is generated from the metadata localization languages (the metaglot
"langs" list), while this field by definition describes the application's language
availability. This deviation works around an upstream Qt bug: since the Qt 6.7.0 refactor,
the CMake function _qt_internal_store_languages_from_ts_files_in_targets loses the parsed
TS language codes (a missing list(APPEND)), so Qt's own CFBundleLocalizations generation
yields an empty list. Consistency between the metadata languages and the application
languages is maintained manually at release time.
TODO: drop this workaround and let Qt generate CFBundleLocalizations itself once the
upstream bug is fixed and the fix ships in the CI toolchain.
-->
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>ca</string>
<string>de</string>
<string>es</string>
<string>fr</string>
<string>id</string>
<string>it</string>
<string>ja</string>
<string>ko</string>
<string>nb_NO</string>
<string>nl</string>
<string>pa_PK</string>
<string>ru</string>
<string>si</string>
<string>ta</string>
<string>tr</string>
<string>uk</string>
<string>zh_CN</string>
{% for lang in langs %}
<string>{{ lang }}</string>
{% endfor %}
</array>
<key>CFBundleDocumentTypes</key>
<array>
+26
View File
@@ -0,0 +1,26 @@
version = 1
source_language = "en"
[strings.app_name]
msgid = "Pineapple Pictures"
comment = "Display name of the application."
[strings.file_type_jpeg]
msgid = "JPEG Image"
comment = "Name of the JPEG document type (jpg, jpeg, jfif)."
[strings.file_type_png]
msgid = "PNG Image"
comment = "Name of the PNG document type."
[strings.file_type_webp]
msgid = "WebP Image"
comment = "Name of the WebP document type."
[strings.file_type_gif]
msgid = "GIF Image"
comment = "Name of the GIF document type."
[strings.file_type_svg]
msgid = "SVG Image"
comment = "Name of the SVG document type."
+8
View File
@@ -0,0 +1,8 @@
/* Application display name. The key is the Info.plist key name. */
"CFBundleName" = "{{ strings.app_name | plist_strings_escape }}";
/* File type names. The key is the source text, covering CFBundleTypeName. */
"{{ sources.file_type_jpeg | plist_strings_escape }}" = "{{ strings.file_type_jpeg | plist_strings_escape }}";
"{{ sources.file_type_png | plist_strings_escape }}" = "{{ strings.file_type_png | plist_strings_escape }}";
"{{ sources.file_type_webp | plist_strings_escape }}" = "{{ strings.file_type_webp | plist_strings_escape }}";
"{{ sources.file_type_gif | plist_strings_escape }}" = "{{ strings.file_type_gif | plist_strings_escape }}";
"{{ sources.file_type_svg | plist_strings_escape }}" = "{{ strings.file_type_svg | plist_strings_escape }}";
+5 -5
View File
@@ -7,11 +7,11 @@
// Icon resources (referenced from the registry as "<exe path>,-<id>")
// ---------------------------------------------------------------------------
101 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/embeds/app.ico" // app
102 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/embeds/bmp.ico" // bmp
103 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/embeds/gif.ico" // gif
104 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/embeds/jpg.ico" // jpg
105 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/embeds/png.ico" // png
101 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/winrc-icos/app.ico" // app
102 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/winrc-icos/bmp.ico" // bmp
103 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/winrc-icos/gif.ico" // gif
104 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/winrc-icos/jpg.ico" // jpg
105 ICON "@CMAKE_CURRENT_SOURCE_DIR@/dist/winrc-icos/png.ico" // png
// ---------------------------------------------------------------------------
// String tables (file type descriptions, referenced as "@<exe path>,-<id>")
+5
View File
@@ -0,0 +1,5 @@
[CustomMessages]
MyAppName={{ strings.MyAppName | inno_escape }}
MyOther={{ strings.MyOther | inno_escape }}
MyAssociateWithFiles={{ strings.MyAssociateWithFiles | inno_escape }}
MyInstallVcRedist={{ strings.MyInstallVcRedist | inno_escape }}
+362
View File
@@ -0,0 +1,362 @@
; Script for generating the Pineapple Pictures installer.
#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.)
{% comment %}
The escaped double opening brace in the AppId value below is wrapped in a Liquid raw block,
because it would otherwise open a Liquid output tag.
{% endcomment %}
AppId={% raw %}{{B5291320-FE7C-4069-BF87-A0AC327FCD20}{% endraw %}
AppName={cm:MyAppName}
AppVersion={#MyAppVersion} ;{#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; Explicit literals (via preprocessor defines): the Setup.exe version info resource
; must not fall back to AppName, because AppName carries an Inno constant and the
; fallback yields an empty string in that case.
VersionInfoDescription={#MyAppName} Setup
VersionInfoProductName={#MyAppName}
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={cm: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]
{% for lang in langs -%}
{% case lang -%}
{% when 'zh_CN' -%}
{% assign base = 'compiler:Languages\ChineseSimplified.isl' -%}
{% else -%}
{% assign base = 'compiler:Default.isl' -%}
{% endcase -%}
Name: "{{ lang }}"; MessagesFile: "{{ base }},Strings\{{ lang }}.isl"
{% endfor -%}
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "associatewithfiles"; Description: "{cm:MyAssociateWithFiles,{#MyAppName}}"; GroupDescription: "{cm:MyOther}"
[Files]
; YYC MARK:
; This file MUST be placed with "ppic.exe" before compiling this script.
; Otherwise exception will be thrown.
Source: "{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "*"; Excludes: "vc_redist.x64.exe,ppic-setup.exe,ppic.iss,Strings"; 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]
; Registration scheme follows the app-registration model (App Paths + Applications
; keys plus per-family ProgIds), with all display names and icons referenced as
; indirect strings into ppic.exe itself (string table 1000-1028, icons 101-105),
; so the registry values stay language-neutral and Explorer resolves them per
; user UI language. Adding a new file family: copy a family block below, adjust
; the ProgId, string ID, icon ID and extension list, then add the extensions to
; SupportedTypes. String/icon IDs must exist in the Windows RC resources
; (dist/pineapple-pictures.rc.in.toml and dist/winrc-icos).
; --- Application registration (always installed) ---
; App Paths: lets the shell resolve "ppic.exe" by name and locates its DLL directory.
Root: HKA; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\ppic.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\ppic.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app}"
; Applications: makes ppic.exe itself appear in the "Open with" lists.
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe"; ValueType: string; ValueName: "FriendlyAppName"; ValueData: "@{app}\ppic.exe,-1000"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe"; ValueType: string; ValueName: "NoOpenWith"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-101"
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
; SupportedTypes: declares the supported types to filter the "Open with" dialog.
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".ani"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".apng"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".avif"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".bmp"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".bw"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".dds"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".exr"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".gif"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".hdr"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".icns"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".ico"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".iff"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".jfif"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".jpeg"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".jpg"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".kra"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".ora"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".pdd"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".pcx"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".pfm"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".phm"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".pic"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".png"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".psb"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".psd"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".psdt"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".pxr"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".qoi"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".ras"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".rgb"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".rgba"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".sct"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".sgi"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".sun"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".svg"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".tga"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".tif"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".tiff"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".wbmp"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".webp"; ValueData: ""
Root: HKA; Subkey: "Software\Classes\Applications\ppic.exe\SupportedTypes"; ValueType: string; ValueName: ".xcf"; ValueData: ""
; --- File type ProgId declarations (always installed) ---
; Per family: one ProgId shared by its extensions, always registered. Default
; value and FriendlyTypeName both carry the indirect string; DefaultIcon
; references the embedded icon by resource ID (101 app, 102 bmp, 103 gif,
; 104 jpg, 105 png). Only the OpenWithProgids line(s) at the end of each
; family block claim the actual association and are gated by the installer
; task "associatewithfiles".
; JPEG family (string 1001, icon 104)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Jpeg"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1001"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Jpeg"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1001"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Jpeg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Jpeg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.jpg\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Jpeg"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.jpeg\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Jpeg"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.jfif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Jpeg"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; GIF family (string 1002, icon 103)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Gif"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1002"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Gif"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1002"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Gif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-103"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Gif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.gif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Gif"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; PNG family (string 1003, icon 105)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Png"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1003"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Png"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1003"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Png\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Png\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.png\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Png"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.apng\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Png"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; SVG (string 1004, icon 105 - transparency capable)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Svg"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1004"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Svg"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1004"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Svg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Svg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.svg\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Svg"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; WebP (string 1005, icon 105 - transparency capable)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Webp"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1005"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Webp"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1005"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Webp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Webp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.webp\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Webp"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; AVIF (string 1006, icon 105 - transparency capable)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Avif"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1006"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Avif"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1006"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Avif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Avif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.avif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Avif"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; ICO (string 1007, icon 105 - transparency capable)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ico"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1007"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ico"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1007"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ico\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ico\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.ico\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Ico"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; ICNS (string 1008, icon 105 - transparency capable)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Icns"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1008"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Icns"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1008"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Icns\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Icns\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.icns\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Icns"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Photoshop family (string 1009, icon 102 - artwork)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Psd"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1009"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Psd"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1009"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Psd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Psd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.psd\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Psd"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.psb\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Psd"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.pdd\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Psd"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.psdt\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Psd"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Krita (string 1010, icon 102 - artwork)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Kra"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1010"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Kra"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1010"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Kra\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Kra\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.kra\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Kra"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; GIMP XCF (string 1011, icon 102 - artwork)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Xcf"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1011"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Xcf"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1011"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Xcf\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Xcf\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.xcf\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Xcf"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; TARGA (string 1012, icon 102 - artwork)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tga"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1012"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tga"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1012"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tga\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tga\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.tga\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Tga"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; TIFF family (string 1013, icon 104 - photo)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tif"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1013"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tif"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1013"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tif\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Tif\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.tif\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Tif"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.tiff\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Tif"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; BMP (string 1014, icon 102)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Bmp"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1014"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Bmp"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1014"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Bmp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Bmp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.bmp\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Bmp"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Wireless BMP (string 1015, icon 102)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Wbmp"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1015"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Wbmp"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1015"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Wbmp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Wbmp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.wbmp\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Wbmp"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; DirectDraw Surface (string 1016, icon 102 - artwork)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Dds"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1016"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Dds"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1016"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Dds\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Dds\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.dds\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Dds"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; HDR family incl. EXR (string 1017, icon 104 - photo)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Hdr"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1017"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Hdr"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1017"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Hdr\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Hdr\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.hdr\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Hdr"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.exr\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Hdr"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; IFF (string 1018, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Iff"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1018"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Iff"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1018"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Iff\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Iff\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.iff\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Iff"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Softimage PIC (string 1019, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pic"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1019"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pic"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1019"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pic\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pic\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.pic\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Pic"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; PCX (string 1020, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pcx"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1020"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pcx"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1020"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pcx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pcx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.pcx\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Pcx"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; QOI (string 1021, icon 105 - transparency capable)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Qoi"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1021"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Qoi"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1021"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Qoi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-105"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Qoi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.qoi\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Qoi"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Sun Raster family (string 1022, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ras"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1022"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ras"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1022"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ras\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ras\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.ras\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Ras"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.sun\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Ras"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; OpenRaster (string 1023, icon 102 - artwork)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ora"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1023"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ora"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1023"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ora\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-102"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ora\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.ora\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Ora"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Animated Cursor (string 1024, icon 103 - animated)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ani"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1024"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ani"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1024"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ani\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-103"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Ani\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.ani\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Ani"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Portable Float Map family (string 1025, icon 104 - photo/HDR)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pfm"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1025"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pfm"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1025"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pfm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pfm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.pfm\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Pfm"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.phm\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Pfm"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Silicon Graphics family (string 1026, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Rgb"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1026"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Rgb"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1026"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Rgb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Rgb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.rgb\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Rgb"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.rgba\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Rgb"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.bw\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Rgb"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
Root: HKA; Subkey: "Software\Classes\.sgi\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Rgb"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Pixar (string 1027, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pxr"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1027"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pxr"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1027"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pxr\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Pxr\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.pxr\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Pxr"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
; Scitex CT (string 1028, icon 104 - fallback)
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Sct"; ValueType: string; ValueName: ""; ValueData: "@{app}\ppic.exe,-1028"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Sct"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\ppic.exe,-1028"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Sct\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\ppic.exe,-104"
Root: HKA; Subkey: "Software\Classes\PineapplePictures.Sct\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\ppic.exe"" ""%1"""
Root: HKA; Subkey: "Software\Classes\.sct\OpenWithProgids"; ValueType: string; ValueName: "PineapplePictures.Sct"; ValueData: ""; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: associatewithfiles
[Icons]
Name: "{group}\{cm:MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "https://github.com/BLumia/pineapple-pictures"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{cm:MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\vc_redist.x64.exe"; Parameters: "/install /quiet /norestart"; StatusMsg: "{cm:MyInstallVcRedist}"; Flags: waituntilterminated
+18
View File
@@ -0,0 +1,18 @@
version = 1
source_language = "en"
[strings.MyAppName]
msgid = "Pineapple Pictures"
comment = "Display name of the application, used in the installer UI."
[strings.MyOther]
msgid = "Other:"
comment = "Group caption for the extra installer task options."
[strings.MyAssociateWithFiles]
msgid = "Associate %1 with its supported file types."
comment = "Installer task description. %1 is the application name."
[strings.MyInstallVcRedist]
msgid = "Installing Microsoft Visual C++ Redistributable..."
comment = "Status message shown while installing the VC++ runtime."
View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 105 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

+28
View File
@@ -0,0 +1,28 @@
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MetaGlot/polib\n"
#. Display name of the application, used in the installer UI.
msgid "Pineapple Pictures"
msgstr ""
#. Group caption for the extra installer task options.
msgid "Other:"
msgstr ""
#. Installer task description. %1 is the application name.
msgid "Associate %1 with its supported file types."
msgstr ""
#. Status message shown while installing the VC++ runtime.
msgid "Installing Microsoft Visual C++ Redistributable..."
msgstr ""
+24
View File
@@ -0,0 +1,24 @@
msgid ""
msgstr ""
"Project-Id-Version: pineapple-pictures\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. Display name of the application, used in the installer UI.
msgid "Pineapple Pictures"
msgstr "菠萝看图"
#. Group caption for the extra installer task options.
msgid "Other:"
msgstr "其他:"
#. Installer task description. %1 is the application name.
msgid "Associate %1 with its supported file types."
msgstr "将 %1 与其支持的文件类型关联。"
#. Status message shown while installing the VC++ runtime.
msgid "Installing Microsoft Visual C++ Redistributable..."
msgstr "正在安装 Microsoft Visual C++ 运行库..."
+36
View File
@@ -0,0 +1,36 @@
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MetaGlot/polib\n"
#. Display name of the application.
msgid "Pineapple Pictures"
msgstr ""
#. Name of the JPEG document type (jpg, jpeg, jfif).
msgid "JPEG Image"
msgstr ""
#. Name of the PNG document type.
msgid "PNG Image"
msgstr ""
#. Name of the WebP document type.
msgid "WebP Image"
msgstr ""
#. Name of the GIF document type.
msgid "GIF Image"
msgstr ""
#. Name of the SVG document type.
msgid "SVG Image"
msgstr ""
+32
View File
@@ -0,0 +1,32 @@
msgid ""
msgstr ""
"Project-Id-Version: pineapple-pictures\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. Display name of the application.
msgid "Pineapple Pictures"
msgstr "菠萝看图"
#. Name of the JPEG document type (jpg, jpeg, jfif).
msgid "JPEG Image"
msgstr "JPEG 图像"
#. Name of the PNG document type.
msgid "PNG Image"
msgstr "PNG 图像"
#. Name of the WebP document type.
msgid "WebP Image"
msgstr "WebP 图像"
#. Name of the GIF document type.
msgid "GIF Image"
msgstr "GIF 图像"
#. Name of the SVG document type.
msgid "SVG Image"
msgstr "SVG 图像"