Blame autobuild/synfigstudio.nsi

465d31
; example2.nsi
465d31
;
465d31
; This script is based on example1.nsi, but it remember the directory, 
465d31
; has uninstall support and (optionally) installs start menu shortcuts.
465d31
;
465d31
; It will install makensisw.exe into a directory that the user selects,
465d31
465d31
!include "MUI2.nsh"
465d31
465d31
;--------------------------------
465d31
465d31
; The name of the installer
833812
Name "Synfig Studio @VERSION@"
465d31
465d31
; The file to write
833812
OutFile "synfigstudio-@VERSION@.exe"
465d31
4e58f8
; The default installation directory and registry
4e58f8
!include "arch-specific.nsh"
465d31
465d31
; Request application privileges for Windows Vista
094500
RequestExecutionLevel highest
465d31
465d31
!define MUI_ABORTWARNING
465d31
465d31
!define SHCNE_ASSOCCHANGED 0x8000000
465d31
!define SHCNF_IDLIST 0
465d31
465d31
!define PRODUCT_REG_KEY "Software\synfigstudio\0.0"
465d31
!define PRODUCT_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\synfigstudio"
465d31
!define PRODUCT_UNINSTALL_EXE "uninstall-synfigstudio.exe"
465d31
465d31
;--------------------------------
465d31
465d31
;!define MUI_HEADERIMAGE
465d31
;!define MUI_HEADERIMAGE_BITMAP "installer_logo.bmp"
e2e3f0
;!define MUI_WELCOMEFINISHPAGE_BITMAP ".\share\pixmaps\installer_logo.bmp"
465d31
465d31
; Pages
465d31
465d31
!insertmacro MUI_PAGE_WELCOME
465d31
;!insertmacro MUI_PAGE_LICENSE ".\alphalicense.txt"
465d31
!insertmacro MUI_PAGE_LICENSE ".\licenses\synfigstudio.txt"
465d31
!insertmacro MUI_PAGE_COMPONENTS
465d31
!insertmacro MUI_PAGE_DIRECTORY
465d31
!insertmacro MUI_PAGE_INSTFILES
465d31
465d31
!insertmacro MUI_UNPAGE_CONFIRM
465d31
!insertmacro MUI_UNPAGE_INSTFILES
465d31
465d31
!insertmacro MUI_LANGUAGE "English"
465d31
465d31
;--------------------------------
465d31
465d31
; The stuff to install
465d31
Section "Synfig Studio"
465d31
465d31
  SectionIn RO
465d31
465d31
  SetOutPath "$INSTDIR\bin"
1599d6
  !include "bin.nsh"
465d31
  
1599d6
  SetOutPath "$INSTDIR\etc"
1599d6
  !include "etc.nsh"
1599d6
1599d6
  SetOutPath "$INSTDIR\lib"
ddbebe
  !include "lib-gdk-pixbuf.nsh"
1599d6
  !include "lib-gtk.nsh"
e7dbcc
  !include "lib-pango.nsh"
1599d6
  !include "lib-synfig.nsh"
1599d6
  
1599d6
  SetOutPath "$INSTDIR\licenses"
1599d6
  !include "licenses.nsh"
ddbebe
  
ddbebe
  SetOutPath "$INSTDIR\share"
ddbebe
  !include "share.nsh"
1599d6
1599d6
  ;SetOutPath "$INSTDIR\python"
1599d6
  ;!include "python.nsh"
465d31
  SetOutPath "$INSTDIR"
465d31
  File /r /x .* python
465d31
465d31
  WriteRegStr HKLM "${PRODUCT_REG_KEY}" "Path" "$INSTDIR"
833812
  WriteRegStr HKLM "${PRODUCT_REG_KEY}" "Version" "@VERSION@"
465d31
  
465d31
  ; Write the uninstall keys for Windows
465d31
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayName" "Synfig Studio"
833812
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion" "@VERSION@"
465d31
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString" '"$INSTDIR\${PRODUCT_UNINSTALL_EXE}"'
465d31
  WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoModify" 1
465d31
  WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoRepair" 1
465d31
465d31
465d31
	WriteRegStr HKCR ".sif" "" "Synfig.Composition"
465d31
	WriteRegStr HKCR ".sif" "Content Type" "image/x-sif"
465d31
	WriteRegStr HKCR ".sif" "PerceivedType" "image"
465d31
465d31
	WriteRegStr HKCR ".sifz" "" "Synfig.Composition"
465d31
	WriteRegStr HKCR ".sifz" "Content Type" "image/x-sifz"
465d31
	WriteRegStr HKCR ".sifz" "PerceivedType" "image"
465d31
465d31
	WriteRegStr HKCR "Synfig.Composition" "" "Synfig Composition File"
465d31
	WriteRegStr HKCR "Synfig.Composition\DefaultIcon" "" "$INSTDIR\share\pixmaps\sif_icon.ico"
465d31
	WriteRegStr HKCR "Synfig.Composition\shell" "" "open"
465d31
	WriteRegStr HKCR "Synfig.Composition\shell\open\command" "" '$INSTDIR\bin\synfigstudio.exe "%1"'
465d31
	
465d31
	System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
465d31
  WriteUninstaller "${PRODUCT_UNINSTALL_EXE}"
465d31
SectionEnd
465d31
1599d6
Section "FFMpeg"
1599d6
	SetOutPath "$INSTDIR\bin"
1599d6
	File "bin\ffmpeg.exe"
1599d6
SectionEnd
1599d6
1599d6
Section "Examples"
1599d6
	!include "examples.nsh"
1599d6
SectionEnd
465d31
465d31
; Optional section (can be disabled by the user)
465d31
Section "Start Menu Shortcuts"
465d31
179fcd
  SetOutPath "$INSTDIR\bin"
179fcd
465d31
  SetShellVarContext All
465d31
  CreateDirectory "$SMPROGRAMS\Synfig"
465d31
  CreateShortCut "$SMPROGRAMS\Synfig\Uninstall Synfig Studio.lnk" "$INSTDIR\uninstall-synfigstudio.exe" "" "$INSTDIR\uninstall-synfigstudio.exe" 0
465d31
  CreateShortCut "$SMPROGRAMS\Synfig\Synfig Studio.lnk" "$INSTDIR\bin\synfigstudio.exe" "" "$INSTDIR\share\pixmaps\synfig_icon.ico" 0
50dc98
  CreateShortCut "$SMPROGRAMS\Synfig\Synfig Studio (Debug Console).lnk" "$INSTDIR\bin\synfigstudio.exe" "--console" "$INSTDIR\share\pixmaps\synfig_icon.ico" 0
465d31
  
465d31
SectionEnd
465d31
465d31
;--------------------------------
465d31
465d31
; Uninstaller
465d31
465d31
Section "Uninstall"
465d31
  
465d31
  DeleteRegKey HKCR "Synfig.Composition\shell\open\command" 
465d31
  DeleteRegKey HKCR "Synfig.Composition\DefaultIcon" 
465d31
  DeleteRegKey HKCR "Synfig.Composition\shell"
465d31
  DeleteRegKey HKCR "Synfig.Composition" 
465d31
  DeleteRegKey HKCR ".sif"
465d31
  DeleteRegKey HKCR ".sifz"
465d31
  
465d31
  ; Remove registry keys
465d31
  DeleteRegKey HKLM "${PRODUCT_REG_KEY}"
465d31
  DeleteRegKey HKLM "${PRODUCT_UNINSTALL_KEY}"
465d31
465d31
  ; Remove files and uninstaller
465d31
  Delete "$INSTDIR\${PRODUCT_UNINSTALL_EXE}"
1599d6
  !include "bin-uninst.nsh"
1599d6
  !include "etc-uninst.nsh"
1599d6
  !include "examples-uninst.nsh"
755dac
  !include "lib-gdk-pixbuf-uninst.nsh"
1599d6
  !include "lib-gtk-uninst.nsh"
755dac
  !include "lib-pango-uninst.nsh"
1599d6
  !include "lib-synfig-uninst.nsh"
1599d6
  RMDir "$INSTDIR\lib"
1599d6
  !include "licenses-uninst.nsh"
1599d6
  ;!include "python-uninst.nsh"
465d31
  RMDir /r "$INSTDIR\python"
8642ea
  !include "share-uninst.nsh"
3c99b8
  RMDir "$INSTDIR\share"
465d31
465d31
  ; Remove shortcuts, if any
465d31
  SetShellVarContext All
465d31
  Delete "$SMPROGRAMS\Synfig\Uninstall Synfig Studio.lnk"
465d31
  Delete "$SMPROGRAMS\Synfig\Synfig Studio.lnk"
465d31
465d31
  ; Remove directories used
465d31
  RMDir "$SMPROGRAMS\Synfig"
465d31
  RMDir "$INSTDIR"
465d31
465d31
	System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
465d31
SectionEnd
465d31
465d31
Function .onInit
465d31
	; Get installer location
465d31
	ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
465d31
;	IfErrors 0 +2
465d31
;	ReadRegStr $R0 HKCU "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
465d31
	
465d31
	StrCmp $R0 "" done
465d31
465d31
	; Get current installed version
465d31
	ReadRegStr $R1 HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion"
465d31
;	IfErrors 0 +2
465d31
;	ReadRegStr $R1 HKCU "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion"
465d31
465d31
;  StrCmp $R1 ${PRODUCT_VERSION} done
465d31
465d31
	MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION "A previous version of Synfig Studio appears to be installed. Would you like to uninstall it first?" IDNO done IDCANCEL abortInstall
465d31
465d31
	; Run the uninstaller
465d31
	
465d31
	ClearErrors
465d31
	; CopyFiles "$R0" $TEMP
465d31
	ExecWait '$R0 _?=$INSTDIR'
465d31
	IfErrors no_remove_uninstaller
465d31
	Delete $R0
465d31
	RMDir $INSTDIR
465d31
465d31
no_remove_uninstaller:
465d31
;    Delete "$TEMP\$R0"
465d31
	
465d31
    ; Check that the user completed the uninstallation by examining the registry
465d31
    ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
465d31
	StrCmp $R0 "" done abortInstall
465d31
	ReadRegStr $R0 HKCU "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
465d31
	StrCmp $R0 "" done abortInstall
465d31
465d31
abortInstall:
465d31
    MessageBox MB_OK|MB_ICONEXCLAMATION "Unable to uninstall previous version of Synfig Studio"
465d31
    Abort
465d31
465d31
done:
465d31
    BringToFront
465d31
465d31
FunctionEnd