mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 09:09:47 +00:00
Compare commits
4 commits
abeca19d69
...
fe082d0356
Author | SHA1 | Date | |
---|---|---|---|
fe082d0356 | |||
60c54601ce | |||
d3f287347a | |||
5bfe44a202 |
264
installer/pixelorama pl.nsi
Normal file
264
installer/pixelorama pl.nsi
Normal file
|
@ -0,0 +1,264 @@
|
||||||
|
; Pixelorama Installer NSIS Script
|
||||||
|
; Copyright Xenofon Konitsas (huskee) 2021
|
||||||
|
; Licensed under the MIT License
|
||||||
|
|
||||||
|
|
||||||
|
; Helper variables so that we don't change 20 instances of the version for every update
|
||||||
|
|
||||||
|
!define APPNAME "Pixelorama"
|
||||||
|
!define APPVERSION "v0.11.3"
|
||||||
|
!define COMPANYNAME "Orama Interactive"
|
||||||
|
|
||||||
|
|
||||||
|
; Include the Modern UI library
|
||||||
|
|
||||||
|
!include "MUI2.nsh"
|
||||||
|
!include "x64.nsh"
|
||||||
|
|
||||||
|
|
||||||
|
; Basic Installer Info
|
||||||
|
|
||||||
|
Name "${APPNAME} ${APPVERSION}"
|
||||||
|
OutFile "${APPNAME}_${APPVERSION}_setup.exe"
|
||||||
|
Unicode True
|
||||||
|
|
||||||
|
|
||||||
|
; Default installation folder
|
||||||
|
|
||||||
|
InstallDir "$APPDATA\${COMPANYNAME}\${APPNAME}"
|
||||||
|
|
||||||
|
|
||||||
|
; Get installation folder from registry if available
|
||||||
|
|
||||||
|
InstallDirRegKey HKCU "Software\${COMPANYNAME}\${APPNAME}" "InstallDir"
|
||||||
|
|
||||||
|
|
||||||
|
; Request application privileges for Vista and later
|
||||||
|
|
||||||
|
RequestExecutionLevel admin
|
||||||
|
|
||||||
|
|
||||||
|
; Interface Settings
|
||||||
|
|
||||||
|
!define MUI_ICON "assets\pixel-install.ico"
|
||||||
|
!define MUI_UNICON "assets\pixel-uninstall.ico"
|
||||||
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "assets\wizard.bmp"
|
||||||
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "assets\wizard.bmp"
|
||||||
|
!define MUI_HEADERIMAGE
|
||||||
|
!define MUI_HEADERIMAGE_RIGHT
|
||||||
|
!define MUI_HEADERIMAGE_BITMAP "assets\header.bmp"
|
||||||
|
!define MUI_HEADERIMAGE_UNBITMAP "assets\header.bmp"
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
|
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||||
|
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||||
|
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
||||||
|
!define MUI_FINISHPAGE_RUN "$INSTDIR\pixelorama.exe"
|
||||||
|
|
||||||
|
; Language selection settings
|
||||||
|
|
||||||
|
!define MUI_LANGDLL_ALLLANGUAGES
|
||||||
|
## Remember the installer language
|
||||||
|
!define MUI_LANGDLL_REGISTRY_ROOT HKCU
|
||||||
|
!define MUI_LANGDLL_REGISTRY_KEY "Software\${COMPANYNAME}\${APPNAME}"
|
||||||
|
!define MUI_LANGDLL_REGISTRY_VALUENAME "Język instalatora"
|
||||||
|
|
||||||
|
|
||||||
|
; Installer pages
|
||||||
|
|
||||||
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
|
!insertmacro MUI_PAGE_LICENSE "Licencja"
|
||||||
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
|
||||||
|
!insertmacro MUI_UNPAGE_WELCOME
|
||||||
|
!insertmacro MUI_UNPAGE_COMPONENTS
|
||||||
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
!insertmacro MUI_UNPAGE_FINISH
|
||||||
|
|
||||||
|
|
||||||
|
; Multilingual support
|
||||||
|
|
||||||
|
!insertmacro MUI_LANGUAGE "Polski"
|
||||||
|
;@INSERT_TRANSLATIONS@
|
||||||
|
|
||||||
|
|
||||||
|
; Assign language strings to installer/uninstaller section names
|
||||||
|
|
||||||
|
LangString SecInstall ${LANG_ENGLISH} "Zainstaluj ${APPNAME}"
|
||||||
|
LangString SecStartmenu ${LANG_ENGLISH} "Utwórz skróty w menu Start (opcjonalnie)"
|
||||||
|
LangString SecDesktop ${LANG_ENGLISH} "Utwórz skrót na pulpicie (opcjonalnie)"
|
||||||
|
LangString un.SecUninstall ${LANG_ENGLISH} "Odinstaluj ${APPNAME} ${APPVERSION}"
|
||||||
|
LangString un.SecConfig ${LANG_ENGLISH} "Usuń pliki konfiguracyjne (opcjonalnie)"
|
||||||
|
|
||||||
|
|
||||||
|
; Installer sections
|
||||||
|
|
||||||
|
Section "$(SecInstall)" SecInstall ; Main install section
|
||||||
|
|
||||||
|
SectionIn RO ; Non optional section
|
||||||
|
|
||||||
|
; Set the installation folder as the output directory
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
|
||||||
|
; Copy all files to install directory
|
||||||
|
${If} ${RunningX64}
|
||||||
|
File "..\build\windows-64bit\pixelorama.exe"
|
||||||
|
File "..\build\windows-64bit\pixelorama.pck"
|
||||||
|
${Else}
|
||||||
|
File "..\build\windows-32bit\pixelorama.exe"
|
||||||
|
File "..\build\windows-32bit\pixelorama.pck"
|
||||||
|
${EndIf}
|
||||||
|
File "..\assets\graphics\icons\pxo.ico"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\pixelorama_data"
|
||||||
|
File /nonfatal /r "..\build\pixelorama_data\*"
|
||||||
|
|
||||||
|
; Store installation folder in the registry
|
||||||
|
WriteRegStr HKCU "Software\${COMPANYNAME}\${APPNAME}" "InstallDir" $INSTDIR
|
||||||
|
|
||||||
|
; Create uninstaller
|
||||||
|
WriteUninstaller "$INSTDIR\uninstall.exe"
|
||||||
|
|
||||||
|
; Create Add/Remove Programs entry
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"DisplayName" "${APPNAME}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"UninstallString" "$INSTDIR\uninstall.exe"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"DisplayIcon" "$INSTDIR\pixelorama.exe,0"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"InstallLocation" "$INSTDIR"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"Publisher" "${COMPANYNAME}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"HelpLink" "https://orama-interactive.github.io/Pixelorama-Docs"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"DisplayVersion" "${APPVERSION}"
|
||||||
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"NoModify" 1
|
||||||
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
||||||
|
"NoRepair" 1
|
||||||
|
|
||||||
|
; Associate .pxo files with Pixelorama
|
||||||
|
WriteRegStr HKCR ".pxo" "" "Pixelorama project"
|
||||||
|
WriteRegStr HKCR ".pxo" "ContentType" "image/pixelorama"
|
||||||
|
WriteRegStr HKCR ".pxo" "PerceivedType" "document"
|
||||||
|
|
||||||
|
WriteRegStr HKCR "Pixelorama project" "" "Pixelorama project"
|
||||||
|
WriteRegStr HKCR "Pixelorama project\shell" "" "open"
|
||||||
|
WriteRegStr HKCR "Pixelorama project\DefaultIcon" "" "$INSTDIR\pxo.ico"
|
||||||
|
|
||||||
|
WriteRegStr HKCR "Pixelorama project\shell\open\command" "" '$INSTDIR\${APPNAME}.exe "%1"'
|
||||||
|
WriteRegStr HKCR "Pixelorama project\shell\edit" "" "Edytuj projekt w ${APPNAME}"
|
||||||
|
WriteRegStr HKCR "Pixelorama project\shell\edit\command" "" '$INSTDIR\${APPNAME}.exe "%1"'
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
|
||||||
|
Section /o "$(SecStartmenu)" SecStartmenu ; Create Start Menu shortcuts
|
||||||
|
|
||||||
|
; Create folder in Start Menu\Programs and create shortcuts for app and uninstaller
|
||||||
|
CreateDirectory "$SMPROGRAMS\${COMPANYNAME}"
|
||||||
|
|
||||||
|
CreateShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME} ${APPVERSION}.lnk" "$INSTDIR\Pixelorama.exe"
|
||||||
|
CreateShortCut "$SMPROGRAMS\${COMPANYNAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
|
||||||
|
Section /o "$(SecDesktop)" SecDesktop ; Create Desktop shortcut
|
||||||
|
|
||||||
|
; Create shortcut for app on desktop
|
||||||
|
CreateShortCut "$DESKTOP\${APPNAME} ${APPVERSION}.lnk" "$INSTDIR\Pixelorama.exe"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
|
||||||
|
; Installer functions
|
||||||
|
|
||||||
|
Function .onInit
|
||||||
|
!insertmacro MUI_LANGDLL_DISPLAY
|
||||||
|
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
|
||||||
|
; Uninstaller sections
|
||||||
|
|
||||||
|
Section "un.$(un.SecUninstall)" un.SecUninstall ; Main uninstall section
|
||||||
|
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
; Delete all files and folders created by the installer
|
||||||
|
Delete "$INSTDIR\uninstall.exe"
|
||||||
|
Delete "$INSTDIR\Pixelorama.exe"
|
||||||
|
Delete "$INSTDIR\Pixelorama.pck"
|
||||||
|
Delete "$INSTDIR\pxo.ico"
|
||||||
|
RMDir /r "$INSTDIR\pixelorama_data"
|
||||||
|
RMDir "$INSTDIR"
|
||||||
|
|
||||||
|
; Delete shortcuts
|
||||||
|
RMDir /r "$SMPROGRAMS\${COMPANYNAME}"
|
||||||
|
Delete "$DESKTOP\${APPNAME} ${APPVERSION}.lnk"
|
||||||
|
|
||||||
|
; Delete the install folder
|
||||||
|
SetOutPath "$APPDATA"
|
||||||
|
RMDir /r "${COMPANYNAME}"
|
||||||
|
|
||||||
|
; If empty, delete the application's registry key
|
||||||
|
DeleteRegKey /ifempty HKCU "Software\${COMPANYNAME}\${APPNAME}"
|
||||||
|
|
||||||
|
; Delete the Add/Remove Programs entry
|
||||||
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
|
||||||
|
|
||||||
|
; Delete the .pxo file association
|
||||||
|
DeleteRegKey HKCR "Pixelorama project"
|
||||||
|
DeleteRegKey HKCR ".pxo"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
|
||||||
|
Section "un.$(un.SecConfig)" un.SecConfig ; Configuration removal section
|
||||||
|
|
||||||
|
; Delete the application's settings file
|
||||||
|
Delete "$APPDATA\Godot\app_userdata\${APPNAME}\cache.ini"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
; Uninstaller functions
|
||||||
|
|
||||||
|
Function un.onInit
|
||||||
|
!insertmacro MUI_UNGETLANGUAGE
|
||||||
|
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
|
||||||
|
; Section description language strings for multilingual support
|
||||||
|
|
||||||
|
LangString DESC_SecInstall ${LANG_ENGLISH} "Instalowanie ${APPNAME} ${APPVERSION}."
|
||||||
|
LangString DESC_SecStartmenu ${LANG_ENGLISH} "Tworzenie skrótów w menu Start ${APPNAME}."
|
||||||
|
LangString DESC_SecDesktop ${LANG_ENGLISH} "Tworzenie skrótu na pulpicie dla ${APPNAME}."
|
||||||
|
LangString DESC_un.SecUninstall ${LANG_ENGLISH} "Odinstalowywanie ${APPNAME} ${APPVERSION} i usuwanie wszystkich skrótów."
|
||||||
|
LangString DESC_un.SecConfig ${LANG_ENGLISH} "Usuwanie plików konfiguracyjnych ${APPNAME}."
|
||||||
|
|
||||||
|
|
||||||
|
; Assign language strings to installer/uninstaller descriptions
|
||||||
|
|
||||||
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||||
|
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecInstall} $(DESC_SecInstall)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartmenu} $(DESC_SecStartmenu)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} $(DESC_SecDesktop)
|
||||||
|
|
||||||
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||||
|
|
||||||
|
|
||||||
|
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
|
||||||
|
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${un.SecUninstall} $(DESC_un.SecUninstall)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${un.SecConfig} $(DESC_un.SecConfig)
|
||||||
|
|
||||||
|
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ const BIN_ACTION := "trash"
|
||||||
var extensions := {} ## Extension name: Extension class
|
var extensions := {} ## Extension name: Extension class
|
||||||
var extension_selected := -1
|
var extension_selected := -1
|
||||||
var damaged_extension: String
|
var damaged_extension: String
|
||||||
|
## Extensions built using the versions in this array are considered compatible with the current Api
|
||||||
|
var legacy_api_versions = [5, 4]
|
||||||
|
|
||||||
|
|
||||||
class Extension:
|
class Extension:
|
||||||
|
@ -157,14 +159,17 @@ func _load_extension(extension_file_or_folder_name: StringName, internal := fals
|
||||||
|
|
||||||
if extension_json.has("supported_api_versions"):
|
if extension_json.has("supported_api_versions"):
|
||||||
var supported_api_versions = extension_json["supported_api_versions"]
|
var supported_api_versions = extension_json["supported_api_versions"]
|
||||||
|
var current_api_version = ExtensionsApi.get_api_version()
|
||||||
if typeof(supported_api_versions) == TYPE_ARRAY:
|
if typeof(supported_api_versions) == TYPE_ARRAY:
|
||||||
supported_api_versions = PackedInt32Array(supported_api_versions)
|
supported_api_versions = PackedInt32Array(supported_api_versions)
|
||||||
# Extensions that support API version 4 are backwards compatible with version 5.
|
# Extensions that support API version 4 are backwards compatible with version 5.
|
||||||
# Version 5 only adds new methods and does not break compatibility.
|
# Version 5 only adds new methods and does not break compatibility.
|
||||||
# TODO: Find a better way to determine which API versions
|
# TODO: Find a better way to determine which API versions
|
||||||
# have backwards compatibility with each other.
|
# have backwards compatibility with each other.
|
||||||
if 4 in supported_api_versions and not 5 in supported_api_versions:
|
if not current_api_version in supported_api_versions:
|
||||||
supported_api_versions.append(5)
|
for legacy_version: int in legacy_api_versions:
|
||||||
|
if legacy_version in supported_api_versions:
|
||||||
|
supported_api_versions.append(current_api_version)
|
||||||
if not ExtensionsApi.get_api_version() in supported_api_versions:
|
if not ExtensionsApi.get_api_version() in supported_api_versions:
|
||||||
var err_text := (
|
var err_text := (
|
||||||
"The extension %s will not work on this version of Pixelorama \n"
|
"The extension %s will not work on this version of Pixelorama \n"
|
||||||
|
@ -173,7 +178,7 @@ func _load_extension(extension_file_or_folder_name: StringName, internal := fals
|
||||||
var required_text := str(
|
var required_text := str(
|
||||||
"Extension works on API versions: %s" % str(supported_api_versions),
|
"Extension works on API versions: %s" % str(supported_api_versions),
|
||||||
"\n",
|
"\n",
|
||||||
"But Pixelorama's API version is: %s" % ExtensionsApi.get_api_version()
|
"But Pixelorama's API version is: %s" % current_api_version
|
||||||
)
|
)
|
||||||
Global.popup_error(str(err_text, required_text))
|
Global.popup_error(str(err_text, required_text))
|
||||||
print("Incompatible API")
|
print("Incompatible API")
|
||||||
|
|
|
@ -141,6 +141,8 @@ func add_animation(indices: Array, destination: int, from_tag: AnimationTag = nu
|
||||||
l = GroupLayer.new(project)
|
l = GroupLayer.new(project)
|
||||||
Global.LayerTypes.THREE_D:
|
Global.LayerTypes.THREE_D:
|
||||||
l = Layer3D.new(project)
|
l = Layer3D.new(project)
|
||||||
|
if l == null: # Ignore copying this layer if it isn't supported
|
||||||
|
continue
|
||||||
var cels := []
|
var cels := []
|
||||||
for f in project.frames:
|
for f in project.frames:
|
||||||
cels.append(l.new_empty_cel())
|
cels.append(l.new_empty_cel())
|
||||||
|
@ -185,8 +187,8 @@ func add_animation(indices: Array, destination: int, from_tag: AnimationTag = nu
|
||||||
|
|
||||||
# add more types here if they have a copy_content() method
|
# add more types here if they have a copy_content() method
|
||||||
if src_cel is PixelCel:
|
if src_cel is PixelCel:
|
||||||
var src_img = src_cel.copy_content()
|
var src_img: ImageExtended = src_cel.copy_content()
|
||||||
var copy := project.new_empty_image()
|
var copy: ImageExtended = new_cel.create_empty_content()
|
||||||
copy.blit_rect(
|
copy.blit_rect(
|
||||||
src_img, Rect2(Vector2.ZERO, src_img.get_size()), Vector2.ZERO
|
src_img, Rect2(Vector2.ZERO, src_img.get_size()), Vector2.ZERO
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue