Blame docker-builder-data/build/script/packet/synfigstudio-nsis.files/synfigstudio.nsi

Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
; Requires files:
Ivan Mahonin a8518c
;   config.nsh
Ivan Mahonin a8518c
;   files-install.nsh
Ivan Mahonin 4d9b8b
;   files-ffmpeg-install.nsh
Ivan Mahonin 4d9b8b
;   files-examples-install.nsh
Ivan Mahonin a8518c
;   files-uninstall.nsh
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; Defines which will set by 'config.nsh':
Ivan Mahonin 21fb9b
;   PK_NAME          - XxxxxXxxxx               - name without spaces 
Ivan Mahonin 4d9b8b
;   PK_DIR_NAME      - Xxxxx Xxxxx              - dir name, may be with spaces 
Ivan Mahonin 21fb9b
;   PK_NAME_FULL     - Xxxxx Xxxxxxxxxx         - full name, may be with spaces
Ivan Mahonin 21fb9b
;   PK_ARCH          - XX                       - architecture, 32 or 64
Ivan Mahonin 21fb9b
;   PK_VERSION       - X.X                      - first two numbers of version
Ivan Mahonin 21fb9b
;   PK_VERSION_FULL  - X.X.X-xxxxx-xxxxx        - full version, without spaces 
Ivan Mahonin 21fb9b
;   PK_EXECUTABLE    - xxx\XxxxXxxx-xxx_xxx.exe - subpath to executable file 
Ivan Mahonin 21fb9b
;   PK_ICON          - xxx\XxxxXxxx-xxx_xxx.ico - subpath to icon file (may be *.exe)
Ivan Mahonin 21fb9b
;   PK_DOCUMENT_ICON - xxx\XxxxXxxx-xxx_xxx.ico - subpath to icon file for associated documents
Ivan Mahonin 4d9b8b
;   PK_LICENSE       - xxxxxxxx\xxxxxxx-xxx.txt - subpath to license file
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!include "config.nsh"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!include "MUI2.nsh"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; The name of the installer
Ivan Mahonin a8518c
Name "${PK_NAME_FULL} ${PK_VERSION_FULL}"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; The file to write
Ivan Mahonin a8518c
OutFile "${PK_NAME}-${PK_VERSION_FULL}.exe"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; The default installation directory and registry
Ivan Mahonin 4d9b8b
InstallDir "$PROGRAMFILES${PK_ARCH}\${PK_DIR_NAME}"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; Request application privileges for Windows Vista
Ivan Mahonin a8518c
RequestExecutionLevel highest
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!insertmacro MUI_LANGUAGE "English"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!define MUI_ABORTWARNING
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!define SHCNE_ASSOCCHANGED 0x8000000
Ivan Mahonin a8518c
!define SHCNF_IDLIST 0
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!define PRODUCT_REG_KEY "Software\${PK_NAME}"
Ivan Mahonin a8518c
!define PRODUCT_UNINSTALL_KEY  "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PK_NAME}"
Ivan Mahonin a8518c
!define PRODUCT_UNINSTALL_EXE  "uninstall-${PK_NAME}.exe"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; Pages
Ivan Mahonin a8518c
Ivan Mahonin 4d9b8b
!insertmacro MUI_PAGE_LICENSE ".\${PK_LICENSE}"
Ivan Mahonin a8518c
!insertmacro MUI_PAGE_COMPONENTS
Ivan Mahonin a8518c
!insertmacro MUI_PAGE_DIRECTORY
Ivan Mahonin a8518c
!insertmacro MUI_PAGE_INSTFILES
Ivan Mahonin a8518c
Ivan Mahonin a8518c
!insertmacro MUI_UNPAGE_CONFIRM
Ivan Mahonin a8518c
!insertmacro MUI_UNPAGE_INSTFILES
Ivan Mahonin a8518c
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
; Installer
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
Ivan Mahonin a8518c
Section "${PK_NAME_FULL} (required)"
Ivan Mahonin a8518c
  SetRegView ${PK_ARCH}
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  SectionIn RO
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  SetOutPath "$INSTDIR"
Ivan Mahonin a8518c
  !include "files-install.nsh"
Ivan Mahonin a8518c
  
Ivan Mahonin a8518c
  WriteRegStr HKLM "${PRODUCT_REG_KEY}" "Path" "$INSTDIR"
Ivan Mahonin a8518c
  WriteRegStr HKLM "${PRODUCT_REG_KEY}" "Version" "${PK_VERSION_FULL}"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  ; Write the uninstall keys for Windows
Ivan Mahonin a8518c
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayName" "${PK_NAME_FULL}"
Ivan Mahonin a8518c
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion" "${PK_VERSION_FULL}"
Ivan Mahonin a8518c
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString" '"$INSTDIR\${PRODUCT_UNINSTALL_EXE}"'
Ivan Mahonin a8518c
  WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoModify" 1
Ivan Mahonin a8518c
  WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoRepair" 1
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sif" "" "Synfig.Composition"
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sif" "Content Type" "image/x-sif"
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sif" "PerceivedType" "image"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sifz" "" "Synfig.Composition"
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sifz" "Content Type" "image/x-sifz"
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sifz" "PerceivedType" "image"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sfg" "" "Synfig.Composition"
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sfg" "Content Type" "image/x-sfg"
Ivan Mahonin a8518c
  WriteRegStr HKCR ".sfg" "PerceivedType" "image"
Ivan Mahonin a8518c
	
Ivan Mahonin a8518c
  WriteRegStr HKCR "Synfig.Composition" "" "Synfig Composition File"
Ivan Mahonin 21fb9b
  WriteRegStr HKCR "Synfig.Composition\DefaultIcon" "" "$INSTDIR\${PK_DOCUMENT_ICON}"
Ivan Mahonin a8518c
  WriteRegStr HKCR "Synfig.Composition\shell" "" "open"
Ivan Mahonin 21fb9b
  WriteRegStr HKCR "Synfig.Composition\shell\open\command" "" '$INSTDIR\${PK_EXECUTABLE} "%1"'
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  SetOutPath "$INSTDIR"
Ivan Mahonin a8518c
  WriteUninstaller "${PRODUCT_UNINSTALL_EXE}"
Ivan Mahonin a8518c
SectionEnd
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; Optional section (can be disabled by the user)
Ivan Mahonin a8518c
Section "FFMpeg"
Ivan Mahonin a8518c
  SetOutPath "$INSTDIR"
Ivan Mahonin a8518c
  !include "files-ffmpeg-install.nsh"
Ivan Mahonin a8518c
SectionEnd
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; Optional section (can be disabled by the user)
Ivan Mahonin a8518c
Section "Examples"
Ivan Mahonin a8518c
  SetOutPath "$INSTDIR"
Ivan Mahonin a8518c
  !include "files-examples-install.nsh"
Ivan Mahonin a8518c
SectionEnd
Ivan Mahonin a8518c
Ivan Mahonin a8518c
; Optional section (can be disabled by the user)
Ivan Mahonin a8518c
Section "Start Menu Shortcuts"
Ivan Mahonin a8518c
  SetRegView ${PK_ARCH}
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  SetOutPath "$INSTDIR\bin"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  SetShellVarContext All
Ivan Mahonin 4d9b8b
  CreateDirectory "$SMPROGRAMS\${PK_DIR_NAME}"
Ivan Mahonin 4d9b8b
  CreateShortCut "$SMPROGRAMS\${PK_DIR_NAME}\Uninstall ${PK_NAME_FULL}.lnk" "$INSTDIR\uninstall-${PK_NAME}.exe" "" "$INSTDIR\uninstall-${PK_NAME}.exe" 0
Ivan Mahonin 4d9b8b
  CreateShortCut "$SMPROGRAMS\${PK_DIR_NAME}\${PK_NAME_FULL}.lnk" "$INSTDIR\${PK_EXECUTABLE}" "" "$INSTDIR\${PK_ICON}" 0
Ivan Mahonin 4d9b8b
  CreateShortCut "$SMPROGRAMS\${PK_DIR_NAME}\${PK_NAME_FULL} (Debug Console).lnk" "$INSTDIR\${PK_EXECUTABLE}" "--console" "$INSTDIR\${PK_ICON}" 0
Ivan Mahonin a8518c
SectionEnd
Ivan Mahonin a8518c
2d3d89
Section "Desktop Icon"
2d3d89
  SetRegView ${PK_ARCH}
2d3d89
2d3d89
  SetOutPath "$INSTDIR\bin"
2d3d89
2d3d89
  SetShellVarContext All
2d3d89
  CreateShortCut "$DESKTOP\${PK_NAME_FULL}.lnk" "$INSTDIR\${PK_EXECUTABLE}" "" "$INSTDIR\${PK_ICON}" 0
2d3d89
SectionEnd
2d3d89
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
; Uninstaller
Ivan Mahonin a8518c
;--------------------------------
Ivan Mahonin a8518c
Ivan Mahonin a8518c
Section "Uninstall"
Ivan Mahonin a8518c
  SetRegView ${PK_ARCH}
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  ReadRegStr $INSTDIR HKLM "${PRODUCT_REG_KEY}" "Path"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  ; Remove registry keys
Ivan Mahonin a8518c
  DeleteRegKey HKCR "Synfig.Composition\shell\open\command" 
Ivan Mahonin a8518c
  DeleteRegKey HKCR "Synfig.Composition\DefaultIcon" 
Ivan Mahonin a8518c
  DeleteRegKey HKCR "Synfig.Composition\shell"
Ivan Mahonin a8518c
  DeleteRegKey HKCR "Synfig.Composition" 
Ivan Mahonin a8518c
  DeleteRegKey HKCR ".sif"
Ivan Mahonin a8518c
  DeleteRegKey HKCR ".sifz"
Ivan Mahonin a8518c
  DeleteRegKey HKCR ".sfg"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  DeleteRegKey HKLM "${PRODUCT_REG_KEY}"
Ivan Mahonin a8518c
  DeleteRegKey HKLM "${PRODUCT_UNINSTALL_KEY}"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  ; Remove files and uninstaller
Ivan Mahonin a8518c
  !include "files-uninstall.nsh"
Ivan Mahonin a8518c
  Delete "$INSTDIR\${PRODUCT_UNINSTALL_EXE}"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  ; Remove shortcuts, if any
Ivan Mahonin a8518c
  SetShellVarContext All
Ivan Mahonin a8518c
  Delete "$SMPROGRAMS\${PK_NAME_FULL}\${PK_NAME_FULL}.lnk"
2d3d89
  Delete "$DESKTOP\${PK_NAME_FULL}.lnk"
Ivan Mahonin a8518c
  Delete "$SMPROGRAMS\${PK_NAME_FULL}\Uninstall ${PK_NAME_FULL}.lnk"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  ; Remove directories used
Ivan Mahonin a8518c
  RMDir "$SMPROGRAMS\${PK_NAME_FULL}"
Ivan Mahonin a8518c
  RMDir "$INSTDIR"
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
Ivan Mahonin a8518c
SectionEnd
Ivan Mahonin a8518c
Ivan Mahonin a8518c
Function .onInit
Ivan Mahonin a8518c
  ; Check previous installation
Ivan Mahonin a8518c
0f13c3
  SetRegView ${PK_ARCH}
0f13c3
  ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
0f13c3
  StrCmp $R0 "" 0 oops
0f13c3
  
Ivan Mahonin a8518c
  SetRegView 32
Ivan Mahonin a8518c
  ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
Ivan Mahonin a8518c
  StrCmp $R0 "" 0 oops
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  SetRegView 64
Ivan Mahonin a8518c
  ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
Ivan Mahonin a8518c
  StrCmp $R0 "" 0 oops
Ivan Mahonin a8518c
Ivan Mahonin a8518c
  BringToFront
Ivan Mahonin a8518c
  Return
Ivan Mahonin a8518c
Ivan Mahonin a8518c
oops:
Ivan Mahonin a8518c
  MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION "Another version of ${PK_NAME_FULL} appears to be installed. Would you like to uninstall it first?" IDNO ignore IDCANCEL cancel
Ivan Mahonin a8518c
  ExecWait '$R0 _?=$INSTDIR'
Ivan Mahonin a8518c
  BringToFront
Ivan Mahonin a8518c
  Return
Ivan Mahonin a8518c
Ivan Mahonin a8518c
cancel:
Ivan Mahonin a8518c
  MessageBox MB_OK|MB_ICONEXCLAMATION "Unable to uninstall another version of ${PK_NAME_FULL}"
Ivan Mahonin a8518c
  Abort
Ivan Mahonin a8518c
Ivan Mahonin a8518c
ignore:
Ivan Mahonin a8518c
  BringToFront
Ivan Mahonin 4d9b8b
  Return
Ivan Mahonin a8518c
FunctionEnd