grim/guifications2

Add the packaging stuff to a subdirectory
draft
2021-04-07, Gary Kramlich
90b0fc9cf7b6
Parents a3143ca8b5e2
Children 162c9e607b81
Add the packaging stuff to a subdirectory
--- a/guifications-installer.nsi Wed Apr 07 03:11:54 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,446 +0,0 @@
-; NSIS Script For Guifications Plugin
-; Author Daniel A. Atallah
-; Based on the Pidgin installer by Herman Bloggs and the Pidgin-Encryption installer by Bill Tompkins
-; Uses NSIS v2.0
-
-;--------------------------------
-;Include Modern UI
- !include "MUI.nsh"
-
-!include "FileFunc.nsh"
-!insertmacro GetParameters
-!insertmacro GetOptions
-
-
-;--------------------------------
-;General
- Name "Pidgin Guifications ${GUIFICATIONS_VERSION}"
-
- ;Do A CRC Check
- CRCCheck On
-
- ;Output File Name
- OutFile "pidgin-guifications-${GUIFICATIONS_VERSION}.exe"
-
- ;The Default Installation Directory
- InstallDir "$PROGRAMFILES\pidgin"
- InstallDirRegKey HKLM SOFTWARE\pidgin ""
-
- ShowInstDetails show
- ShowUnInstDetails show
- SetCompressor /SOLID lzma
-
-;Reserve files used in .onInit for faster start-up
-!insertmacro MUI_RESERVEFILE_LANGDLL
-
- !define GUIFICATIONS_UNINST_EXE "pidgin-guifications-uninst.exe"
- !define GUIFICATIONS_DLL "guifications.dll"
- !define GUIFICATIONS_UNINSTALL_LNK "Guifications Uninstall.lnk"
-
-;--------------------------------
-; Registry keys:
- !define GUIFICATIONS_REG_KEY "SOFTWARE\pidgin-guifications"
- !define GUIFICATIONS_UNINSTALL_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\pidgin-guifications"
-
-;-------------------------------
-; Pidgin Plugin installer helper stuff
- !addincludedir "${PIDGIN_TREE_TOP}\pidgin\win32\nsis"
- !include "pidgin-plugin.nsh"
-
-;--------------------------------
-; Modern UI Configuration
- !define MUI_ICON .\nsis\install.ico
- !define MUI_UNICON .\nsis\install.ico
- !define MUI_HEADERIMAGE
- !define MUI_HEADERIMAGE_BITMAP "nsis\header.bmp"
- !define MUI_CUSTOMFUNCTION_GUIINIT gf_checkPidginVersion
- !define MUI_ABORTWARNING
-
- !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
- !define MUI_LANGDLL_REGISTRY_KEY ${GUIFICATIONS_REG_KEY}
- !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
-
-;--------------------------------
-; Pages
- ;Welcome Page
- !define MUI_WELCOMEPAGE_TITLE $(WELCOME_TITLE)
- !define MUI_WELCOMEPAGE_TEXT $(WELCOME_TEXT)
- !insertmacro MUI_PAGE_WELCOME
-
- ;License Page
- !define MUI_LICENSEPAGE_RADIOBUTTONS
- !insertmacro MUI_PAGE_LICENSE ".\COPYING"
-
- ;Directory Page
- !define MUI_DIRECTORYPAGE_TEXT_TOP $(DIR_SUBTITLE)
- !define MUI_DIRECTORYPAGE_TEXT_DESTINATION $(DIR_INNERTEXT)
- !insertmacro MUI_PAGE_DIRECTORY
-
- ;Installation Page
- !insertmacro MUI_PAGE_INSTFILES
-
- ;Finish Page
- !define MUI_FINISHPAGE_TITLE $(FINISH_TITLE)
- !define MUI_FINISHPAGE_TEXT $(FINISH_TEXT)
- !insertmacro MUI_PAGE_FINISH
-
-
-;--------------------------------
-; Languages
- !insertmacro MUI_LANGUAGE "English"
- !insertmacro MUI_LANGUAGE "French"
- !insertmacro MUI_LANGUAGE "Italian"
- !insertmacro MUI_LANGUAGE "Spanish"
-
- ;Translations
- !include "nsis\translations\english.nsh"
- !include "nsis\translations\french.nsh"
- !include "nsis\translations\italian.nsh"
- !include "nsis\translations\spanish.nsh"
-
-; Uninstall the previous version if it exists
-Section -SecUninstallOldPlugin
- ; Check install rights..
- Call CheckUserInstallRights
- Pop $R0
-
- StrCmp $R0 "HKLM" rights_hklm
- StrCmp $R0 "HKCU" rights_hkcu done
-
- rights_hkcu:
- ReadRegStr $R1 HKCU "${GUIFICATIONS_REG_KEY}" ""
- ReadRegStr $R2 HKCU "${GUIFICATIONS_REG_KEY}" "Version"
- ReadRegStr $R3 HKCU "${GUIFICATIONS_UNINSTALL_KEY}" "UninstallString"
- Goto try_uninstall
-
- rights_hklm:
- ReadRegStr $R1 HKLM "${GUIFICATIONS_REG_KEY}" ""
- ReadRegStr $R2 HKLM "${GUIFICATIONS_REG_KEY}" "Version"
- ReadRegStr $R3 HKLM "${GUIFICATIONS_UNINSTALL_KEY}" "UninstallString"
-
- ; If previous version exists .. remove
- try_uninstall:
- StrCmp $R1 "" done
- StrCmp $R2 "" uninstall_problem
- IfFileExists $R3 0 uninstall_problem
- ; Have uninstall string.. go ahead and uninstall.
- SetOverwrite on
- ; Need to copy uninstaller outside of the install dir
- ClearErrors
- CopyFiles /SILENT $R3 "$TEMP\${GUIFICATIONS_UNINST_EXE}"
- SetOverwrite off
- IfErrors uninstall_problem
- ; Ready to uninstall..
- ClearErrors
- ExecWait '"$TEMP\${GUIFICATIONS_UNINST_EXE}" /S _?=$R1'
- IfErrors exec_error
- Delete "$TEMP\${GUIFICATIONS_UNINST_EXE}"
- Goto done
-
- exec_error:
- Delete "$TEMP\${GUIFICATIONS_UNINST_EXE}"
- Goto uninstall_problem
-
- uninstall_problem:
- ; Just delete the plugin and uninstaller, and remove Registry key
- MessageBox MB_YESNO $(GUIFICATIONS_PROMPT_WIPEOUT) IDYES do_wipeout IDNO cancel_install
- cancel_install:
- Quit
-
- do_wipeout:
- StrCmp $R0 "HKLM" del_lm_reg del_cu_reg
- del_cu_reg:
- DeleteRegKey HKCU ${GUIFICATIONS_REG_KEY}
- Goto uninstall_prob_cont
- del_lm_reg:
- DeleteRegKey HKLM ${GUIFICATIONS_REG_KEY}
-
- uninstall_prob_cont:
- ; plugin DLL
- Delete "$R1\plugins\${GUIFICATIONS_DLL}"
- ; pixmaps
- RMDir /r "$R1\pixmaps\pidgin\guifications"
- Delete "$R3"
-
- done:
-SectionEnd
-
-!macro INSTALL_GMO LANG
- SetOutPath "$INSTDIR\locale\${LANG}\LC_MESSAGES"
- File /oname=guifications.mo po\${LANG}.gmo
-!macroend
-
-Section "Install"
- Call CheckUserInstallRights
- Pop $R0
-
- StrCmp $R0 "NONE" instrights_none
- StrCmp $R0 "HKLM" instrights_hklm instrights_hkcu
-
- instrights_hklm:
- ; Write the version registry keys:
- WriteRegStr HKLM ${GUIFICATIONS_REG_KEY} "" "$INSTDIR"
- WriteRegStr HKLM ${GUIFICATIONS_REG_KEY} "Version" "${GUIFICATIONS_VERSION}"
-
- ; Write the uninstall keys for Windows
- WriteRegStr HKLM ${GUIFICATIONS_UNINSTALL_KEY} "DisplayName" "$(GUIFICATIONS_UNINSTALL_DESC)"
- WriteRegStr HKLM ${GUIFICATIONS_UNINSTALL_KEY} "UninstallString" "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
- SetShellVarContext "all"
- Goto install_files
-
- instrights_hkcu:
- ; Write the version registry keys:
- WriteRegStr HKCU ${GUIFICATIONS_REG_KEY} "" "$INSTDIR"
- WriteRegStr HKCU ${GUIFICATIONS_REG_KEY} "Version" "${GUIFICATIONS_VERSION}"
-
- ; Write the uninstall keys for Windows
- WriteRegStr HKCU ${GUIFICATIONS_UNINSTALL_KEY} "DisplayName" "$(GUIFICATIONS_UNINSTALL_DESC)"
- WriteRegStr HKCU ${GUIFICATIONS_UNINSTALL_KEY} "UninstallString" "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
- Goto install_files
-
- instrights_none:
- ; No registry keys for us...
-
- install_files:
- SetOutPath "$INSTDIR\plugins"
- SetCompress Auto
- SetOverwrite on
- File "src\${GUIFICATIONS_DLL}"
-
- SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\conf"
- File "pixmaps\*.png"
-
- SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\default"
- File "themes\default\theme.xml"
- File "themes\default\background.png"
- SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\mini"
- File "themes\mini\theme.xml"
- File "themes\mini\background.png"
- SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\Penguins"
- File "themes\Penguins\theme.xml"
- File "themes\Penguins\penguin.png"
-
- ; translations - if there is a way to automate this, i can't find it
- !insertmacro INSTALL_GMO "bn"
- !insertmacro INSTALL_GMO "cs"
- !insertmacro INSTALL_GMO "de"
- !insertmacro INSTALL_GMO "en_AU"
- !insertmacro INSTALL_GMO "en_GB"
- !insertmacro INSTALL_GMO "es"
- !insertmacro INSTALL_GMO "fr"
- !insertmacro INSTALL_GMO "gl"
- !insertmacro INSTALL_GMO "he"
- !insertmacro INSTALL_GMO "hu"
- !insertmacro INSTALL_GMO "it"
- !insertmacro INSTALL_GMO "ja"
- !insertmacro INSTALL_GMO "mk"
- !insertmacro INSTALL_GMO "nl"
- !insertmacro INSTALL_GMO "no"
- !insertmacro INSTALL_GMO "pt"
- !insertmacro INSTALL_GMO "pt_BR"
- !insertmacro INSTALL_GMO "ru"
- !insertmacro INSTALL_GMO "sk"
- !insertmacro INSTALL_GMO "sr"
- !insertmacro INSTALL_GMO "sr@Latn"
- !insertmacro INSTALL_GMO "sv"
- !insertmacro INSTALL_GMO "uk"
- !insertmacro INSTALL_GMO "zh_CN"
- !insertmacro INSTALL_GMO "zh_TW"
-
- StrCmp $R0 "NONE" done
- CreateShortCut "$SMPROGRAMS\Pidgin\${GUIFICATIONS_UNINSTALL_LNK}" "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
- WriteUninstaller "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
- SetOverWrite off
-
- done:
-SectionEnd
-
-Section Uninstall
- Call un.CheckUserInstallRights
- Pop $R0
- StrCmp $R0 "NONE" no_rights
- StrCmp $R0 "HKCU" try_hkcu try_hklm
-
- try_hkcu:
- ReadRegStr $R0 HKCU "${GUIFICATIONS_REG_KEY}" ""
- StrCmp $R0 $INSTDIR 0 cant_uninstall
- ; HKCU install path matches our INSTDIR.. so uninstall
- DeleteRegKey HKCU "${GUIFICATIONS_REG_KEY}"
- DeleteRegKey HKCU "${GUIFICATIONS_UNINSTALL_KEY}"
- Goto cont_uninstall
-
- try_hklm:
- ReadRegStr $R0 HKLM "${GUIFICATIONS_REG_KEY}" ""
- StrCmp $R0 $INSTDIR 0 try_hkcu
- ; HKLM install path matches our INSTDIR.. so uninstall
- DeleteRegKey HKLM "${GUIFICATIONS_REG_KEY}"
- DeleteRegKey HKLM "${GUIFICATIONS_UNINSTALL_KEY}"
- ; Sets start menu and desktop scope to all users..
- SetShellVarContext "all"
-
- cont_uninstall:
- ; plugin
- Delete "$INSTDIR\plugins\${GUIFICATIONS_DLL}"
- ; pixmaps
- RMDir /r "$INSTDIR\pixmaps\pidgin\guifications"
-
- ; translations
- ; loop through locale dirs and try to delete any guifications translations
- ClearErrors
- FindFirst $R1 $R2 "$INSTDIR\locale\*"
- IfErrors doneFindingTranslations
-
- processCurrentTranslationDir:
- ;Ignore "." and ".."
- StrCmp $R2 "." readNextTranslationDir
- StrCmp $R2 ".." readNextTranslationDir
- IfFileExists "$INSTDIR\locale\$R2\LC_MESSAGES\guifications.mo" +1 readNextTranslationDir
- Delete "$INSTDIR\locale\$R2\LC_MESSAGES\guifications.mo"
- RMDir "$INSTDIR\locale\$R2\LC_MESSAGES"
- RMDir "$INSTDIR\locale\$R2"
- ClearErrors
- readNextTranslationDir:
- FindNext $R1 $R2
- IfErrors doneFindingTranslations processCurrentTranslationDir
-
- doneFindingTranslations:
- FindClose $R1
- RMDir "$INSTDIR\locale"
-
- ; uninstaller
- Delete "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
- ; uninstaller shortcut
- Delete "$SMPROGRAMS\Pidgin\${GUIFICATIONS_UNINSTALL_LNK}"
-
- ; try to delete the Pidgin directories, in case it has already uninstalled
- RMDir "$INSTDIR\plugins"
- RMDir "$INSTDIR"
- RMDir "$SMPROGRAMS\Pidgin"
-
- Goto done
-
- cant_uninstall:
- MessageBox MB_OK $(un.GUIFICATIONS_UNINSTALL_ERROR_1) IDOK
- Quit
-
- no_rights:
- MessageBox MB_OK $(un.GUIFICATIONS_UNINSTALL_ERROR_2) IDOK
- Quit
-
- done:
-SectionEnd
-
-Function .onInit
- ${GetParameters} $R0
- ClearErrors
- ${GetOptions} $R0 "/L=" $R0
- IfErrors +3
- StrCpy $LANGUAGE $R0
- Goto skip_lang
-
- ; Select Language
- ; Display Language selection dialog
- !insertmacro MUI_LANGDLL_DISPLAY
- skip_lang:
-
-FunctionEnd
-
-Function un.onInit
- ; Get stored language preference
- !insertmacro MUI_UNGETLANGUAGE
-FunctionEnd
-
-
-; Check that the selected installation dir contains pidgin.exe
-Function .onVerifyInstDir
- IfFileExists $INSTDIR\pidgin.exe +2
- Abort
-FunctionEnd
-
-; Check that the currently installed pidgin version is compatible with the version of guifications we are installing
-Function gf_checkPidginVersion
- Push $R0
-
- Push ${PIDGIN_VERSION}
- Call CheckPidginVersion
- Pop $R0
-
- StrCmp $R0 ${PIDGIN_VERSION_OK} gf_checkPidginVersion_OK
- StrCmp $R0 ${PIDGIN_VERSION_INCOMPATIBLE} +1 +6
- Call GetPidginVersion
- IfErrors +3
- Pop $R0
- MessageBox MB_OK|MB_ICONSTOP "$(BAD_PIDGIN_VERSION_1) $R0 $(BAD_PIDGIN_VERSION_2)"
- goto +2
- MessageBox MB_OK|MB_ICONSTOP "$(NO_PIDGIN_VERSION)"
- Quit
-
- gf_checkPidginVersion_OK:
- Pop $R0
-FunctionEnd
-
-Function CheckUserInstallRights
- ClearErrors
- UserInfo::GetName
- IfErrors Win9x
- Pop $0
- UserInfo::GetAccountType
- Pop $1
-
- StrCmp $1 "Admin" 0 +3
- StrCpy $1 "HKLM"
- Goto done
- StrCmp $1 "Power" 0 +3
- StrCpy $1 "HKLM"
- Goto done
- StrCmp $1 "User" 0 +3
- StrCpy $1 "HKCU"
- Goto done
- StrCmp $1 "Guest" 0 +3
- StrCpy $1 "NONE"
- Goto done
-
- ; Unknown error
- StrCpy $1 "NONE"
- Goto done
-
- Win9x:
- StrCpy $1 "HKLM"
-
- done:
- Push $1
-FunctionEnd
-
-; This is necessary because the uninstaller doesn't have access to installer functions
-; (it is identical to CheckUserInstallRights)
-Function un.CheckUserInstallRights
- ClearErrors
- UserInfo::GetName
- IfErrors Win9x
- Pop $0
- UserInfo::GetAccountType
- Pop $1
-
- StrCmp $1 "Admin" 0 +3
- StrCpy $1 "HKLM"
- Goto done
- StrCmp $1 "Power" 0 +3
- StrCpy $1 "HKLM"
- Goto done
- StrCmp $1 "User" 0 +3
- StrCpy $1 "HKCU"
- Goto done
- StrCmp $1 "Guest" 0 +3
- StrCpy $1 "NONE"
- Goto done
-
- ; Unknown error
- StrCpy $1 "NONE"
- Goto done
-
- Win9x:
- StrCpy $1 "HKLM"
-
- done:
- Push $1
-FunctionEnd
--- a/meson.build Wed Apr 07 03:11:54 2021 -0500
+++ b/meson.build Wed Apr 07 03:16:51 2021 -0500
@@ -21,7 +21,7 @@
version_conf.set('GUIFICATIONS_MINOR_VERSION', parts[1])
version_conf.set('GUIFICATIONS_MICRO_VERSION', parts[2])
version_conf.set('GUIFICATIONS_EXTRA_VERSION', extra)
-version_conf.set('GUIFICATIONS_VERSION', meson.project_version())
+version_conf.set('VERSION', meson.project_version())
###############################################################################
# Dependencies
@@ -76,6 +76,7 @@
###############################################################################
# Subdirectories
###############################################################################
+subdir('packaging')
subdir('pixmaps')
subdir('po')
subdir('src')
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/guifications-installer.nsi Wed Apr 07 03:16:51 2021 -0500
@@ -0,0 +1,446 @@
+; NSIS Script For Guifications Plugin
+; Author Daniel A. Atallah
+; Based on the Pidgin installer by Herman Bloggs and the Pidgin-Encryption installer by Bill Tompkins
+; Uses NSIS v2.0
+
+;--------------------------------
+;Include Modern UI
+ !include "MUI.nsh"
+
+!include "FileFunc.nsh"
+!insertmacro GetParameters
+!insertmacro GetOptions
+
+
+;--------------------------------
+;General
+ Name "Pidgin Guifications ${GUIFICATIONS_VERSION}"
+
+ ;Do A CRC Check
+ CRCCheck On
+
+ ;Output File Name
+ OutFile "pidgin-guifications-${GUIFICATIONS_VERSION}.exe"
+
+ ;The Default Installation Directory
+ InstallDir "$PROGRAMFILES\pidgin"
+ InstallDirRegKey HKLM SOFTWARE\pidgin ""
+
+ ShowInstDetails show
+ ShowUnInstDetails show
+ SetCompressor /SOLID lzma
+
+;Reserve files used in .onInit for faster start-up
+!insertmacro MUI_RESERVEFILE_LANGDLL
+
+ !define GUIFICATIONS_UNINST_EXE "pidgin-guifications-uninst.exe"
+ !define GUIFICATIONS_DLL "guifications.dll"
+ !define GUIFICATIONS_UNINSTALL_LNK "Guifications Uninstall.lnk"
+
+;--------------------------------
+; Registry keys:
+ !define GUIFICATIONS_REG_KEY "SOFTWARE\pidgin-guifications"
+ !define GUIFICATIONS_UNINSTALL_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\pidgin-guifications"
+
+;-------------------------------
+; Pidgin Plugin installer helper stuff
+ !addincludedir "${PIDGIN_TREE_TOP}\pidgin\win32\nsis"
+ !include "pidgin-plugin.nsh"
+
+;--------------------------------
+; Modern UI Configuration
+ !define MUI_ICON .\nsis\install.ico
+ !define MUI_UNICON .\nsis\install.ico
+ !define MUI_HEADERIMAGE
+ !define MUI_HEADERIMAGE_BITMAP "nsis\header.bmp"
+ !define MUI_CUSTOMFUNCTION_GUIINIT gf_checkPidginVersion
+ !define MUI_ABORTWARNING
+
+ !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
+ !define MUI_LANGDLL_REGISTRY_KEY ${GUIFICATIONS_REG_KEY}
+ !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+;--------------------------------
+; Pages
+ ;Welcome Page
+ !define MUI_WELCOMEPAGE_TITLE $(WELCOME_TITLE)
+ !define MUI_WELCOMEPAGE_TEXT $(WELCOME_TEXT)
+ !insertmacro MUI_PAGE_WELCOME
+
+ ;License Page
+ !define MUI_LICENSEPAGE_RADIOBUTTONS
+ !insertmacro MUI_PAGE_LICENSE ".\COPYING"
+
+ ;Directory Page
+ !define MUI_DIRECTORYPAGE_TEXT_TOP $(DIR_SUBTITLE)
+ !define MUI_DIRECTORYPAGE_TEXT_DESTINATION $(DIR_INNERTEXT)
+ !insertmacro MUI_PAGE_DIRECTORY
+
+ ;Installation Page
+ !insertmacro MUI_PAGE_INSTFILES
+
+ ;Finish Page
+ !define MUI_FINISHPAGE_TITLE $(FINISH_TITLE)
+ !define MUI_FINISHPAGE_TEXT $(FINISH_TEXT)
+ !insertmacro MUI_PAGE_FINISH
+
+
+;--------------------------------
+; Languages
+ !insertmacro MUI_LANGUAGE "English"
+ !insertmacro MUI_LANGUAGE "French"
+ !insertmacro MUI_LANGUAGE "Italian"
+ !insertmacro MUI_LANGUAGE "Spanish"
+
+ ;Translations
+ !include "nsis\translations\english.nsh"
+ !include "nsis\translations\french.nsh"
+ !include "nsis\translations\italian.nsh"
+ !include "nsis\translations\spanish.nsh"
+
+; Uninstall the previous version if it exists
+Section -SecUninstallOldPlugin
+ ; Check install rights..
+ Call CheckUserInstallRights
+ Pop $R0
+
+ StrCmp $R0 "HKLM" rights_hklm
+ StrCmp $R0 "HKCU" rights_hkcu done
+
+ rights_hkcu:
+ ReadRegStr $R1 HKCU "${GUIFICATIONS_REG_KEY}" ""
+ ReadRegStr $R2 HKCU "${GUIFICATIONS_REG_KEY}" "Version"
+ ReadRegStr $R3 HKCU "${GUIFICATIONS_UNINSTALL_KEY}" "UninstallString"
+ Goto try_uninstall
+
+ rights_hklm:
+ ReadRegStr $R1 HKLM "${GUIFICATIONS_REG_KEY}" ""
+ ReadRegStr $R2 HKLM "${GUIFICATIONS_REG_KEY}" "Version"
+ ReadRegStr $R3 HKLM "${GUIFICATIONS_UNINSTALL_KEY}" "UninstallString"
+
+ ; If previous version exists .. remove
+ try_uninstall:
+ StrCmp $R1 "" done
+ StrCmp $R2 "" uninstall_problem
+ IfFileExists $R3 0 uninstall_problem
+ ; Have uninstall string.. go ahead and uninstall.
+ SetOverwrite on
+ ; Need to copy uninstaller outside of the install dir
+ ClearErrors
+ CopyFiles /SILENT $R3 "$TEMP\${GUIFICATIONS_UNINST_EXE}"
+ SetOverwrite off
+ IfErrors uninstall_problem
+ ; Ready to uninstall..
+ ClearErrors
+ ExecWait '"$TEMP\${GUIFICATIONS_UNINST_EXE}" /S _?=$R1'
+ IfErrors exec_error
+ Delete "$TEMP\${GUIFICATIONS_UNINST_EXE}"
+ Goto done
+
+ exec_error:
+ Delete "$TEMP\${GUIFICATIONS_UNINST_EXE}"
+ Goto uninstall_problem
+
+ uninstall_problem:
+ ; Just delete the plugin and uninstaller, and remove Registry key
+ MessageBox MB_YESNO $(GUIFICATIONS_PROMPT_WIPEOUT) IDYES do_wipeout IDNO cancel_install
+ cancel_install:
+ Quit
+
+ do_wipeout:
+ StrCmp $R0 "HKLM" del_lm_reg del_cu_reg
+ del_cu_reg:
+ DeleteRegKey HKCU ${GUIFICATIONS_REG_KEY}
+ Goto uninstall_prob_cont
+ del_lm_reg:
+ DeleteRegKey HKLM ${GUIFICATIONS_REG_KEY}
+
+ uninstall_prob_cont:
+ ; plugin DLL
+ Delete "$R1\plugins\${GUIFICATIONS_DLL}"
+ ; pixmaps
+ RMDir /r "$R1\pixmaps\pidgin\guifications"
+ Delete "$R3"
+
+ done:
+SectionEnd
+
+!macro INSTALL_GMO LANG
+ SetOutPath "$INSTDIR\locale\${LANG}\LC_MESSAGES"
+ File /oname=guifications.mo po\${LANG}.gmo
+!macroend
+
+Section "Install"
+ Call CheckUserInstallRights
+ Pop $R0
+
+ StrCmp $R0 "NONE" instrights_none
+ StrCmp $R0 "HKLM" instrights_hklm instrights_hkcu
+
+ instrights_hklm:
+ ; Write the version registry keys:
+ WriteRegStr HKLM ${GUIFICATIONS_REG_KEY} "" "$INSTDIR"
+ WriteRegStr HKLM ${GUIFICATIONS_REG_KEY} "Version" "${GUIFICATIONS_VERSION}"
+
+ ; Write the uninstall keys for Windows
+ WriteRegStr HKLM ${GUIFICATIONS_UNINSTALL_KEY} "DisplayName" "$(GUIFICATIONS_UNINSTALL_DESC)"
+ WriteRegStr HKLM ${GUIFICATIONS_UNINSTALL_KEY} "UninstallString" "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
+ SetShellVarContext "all"
+ Goto install_files
+
+ instrights_hkcu:
+ ; Write the version registry keys:
+ WriteRegStr HKCU ${GUIFICATIONS_REG_KEY} "" "$INSTDIR"
+ WriteRegStr HKCU ${GUIFICATIONS_REG_KEY} "Version" "${GUIFICATIONS_VERSION}"
+
+ ; Write the uninstall keys for Windows
+ WriteRegStr HKCU ${GUIFICATIONS_UNINSTALL_KEY} "DisplayName" "$(GUIFICATIONS_UNINSTALL_DESC)"
+ WriteRegStr HKCU ${GUIFICATIONS_UNINSTALL_KEY} "UninstallString" "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
+ Goto install_files
+
+ instrights_none:
+ ; No registry keys for us...
+
+ install_files:
+ SetOutPath "$INSTDIR\plugins"
+ SetCompress Auto
+ SetOverwrite on
+ File "src\${GUIFICATIONS_DLL}"
+
+ SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\conf"
+ File "pixmaps\*.png"
+
+ SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\default"
+ File "themes\default\theme.xml"
+ File "themes\default\background.png"
+ SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\mini"
+ File "themes\mini\theme.xml"
+ File "themes\mini\background.png"
+ SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\Penguins"
+ File "themes\Penguins\theme.xml"
+ File "themes\Penguins\penguin.png"
+
+ ; translations - if there is a way to automate this, i can't find it
+ !insertmacro INSTALL_GMO "bn"
+ !insertmacro INSTALL_GMO "cs"
+ !insertmacro INSTALL_GMO "de"
+ !insertmacro INSTALL_GMO "en_AU"
+ !insertmacro INSTALL_GMO "en_GB"
+ !insertmacro INSTALL_GMO "es"
+ !insertmacro INSTALL_GMO "fr"
+ !insertmacro INSTALL_GMO "gl"
+ !insertmacro INSTALL_GMO "he"
+ !insertmacro INSTALL_GMO "hu"
+ !insertmacro INSTALL_GMO "it"
+ !insertmacro INSTALL_GMO "ja"
+ !insertmacro INSTALL_GMO "mk"
+ !insertmacro INSTALL_GMO "nl"
+ !insertmacro INSTALL_GMO "no"
+ !insertmacro INSTALL_GMO "pt"
+ !insertmacro INSTALL_GMO "pt_BR"
+ !insertmacro INSTALL_GMO "ru"
+ !insertmacro INSTALL_GMO "sk"
+ !insertmacro INSTALL_GMO "sr"
+ !insertmacro INSTALL_GMO "sr@Latn"
+ !insertmacro INSTALL_GMO "sv"
+ !insertmacro INSTALL_GMO "uk"
+ !insertmacro INSTALL_GMO "zh_CN"
+ !insertmacro INSTALL_GMO "zh_TW"
+
+ StrCmp $R0 "NONE" done
+ CreateShortCut "$SMPROGRAMS\Pidgin\${GUIFICATIONS_UNINSTALL_LNK}" "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
+ WriteUninstaller "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
+ SetOverWrite off
+
+ done:
+SectionEnd
+
+Section Uninstall
+ Call un.CheckUserInstallRights
+ Pop $R0
+ StrCmp $R0 "NONE" no_rights
+ StrCmp $R0 "HKCU" try_hkcu try_hklm
+
+ try_hkcu:
+ ReadRegStr $R0 HKCU "${GUIFICATIONS_REG_KEY}" ""
+ StrCmp $R0 $INSTDIR 0 cant_uninstall
+ ; HKCU install path matches our INSTDIR.. so uninstall
+ DeleteRegKey HKCU "${GUIFICATIONS_REG_KEY}"
+ DeleteRegKey HKCU "${GUIFICATIONS_UNINSTALL_KEY}"
+ Goto cont_uninstall
+
+ try_hklm:
+ ReadRegStr $R0 HKLM "${GUIFICATIONS_REG_KEY}" ""
+ StrCmp $R0 $INSTDIR 0 try_hkcu
+ ; HKLM install path matches our INSTDIR.. so uninstall
+ DeleteRegKey HKLM "${GUIFICATIONS_REG_KEY}"
+ DeleteRegKey HKLM "${GUIFICATIONS_UNINSTALL_KEY}"
+ ; Sets start menu and desktop scope to all users..
+ SetShellVarContext "all"
+
+ cont_uninstall:
+ ; plugin
+ Delete "$INSTDIR\plugins\${GUIFICATIONS_DLL}"
+ ; pixmaps
+ RMDir /r "$INSTDIR\pixmaps\pidgin\guifications"
+
+ ; translations
+ ; loop through locale dirs and try to delete any guifications translations
+ ClearErrors
+ FindFirst $R1 $R2 "$INSTDIR\locale\*"
+ IfErrors doneFindingTranslations
+
+ processCurrentTranslationDir:
+ ;Ignore "." and ".."
+ StrCmp $R2 "." readNextTranslationDir
+ StrCmp $R2 ".." readNextTranslationDir
+ IfFileExists "$INSTDIR\locale\$R2\LC_MESSAGES\guifications.mo" +1 readNextTranslationDir
+ Delete "$INSTDIR\locale\$R2\LC_MESSAGES\guifications.mo"
+ RMDir "$INSTDIR\locale\$R2\LC_MESSAGES"
+ RMDir "$INSTDIR\locale\$R2"
+ ClearErrors
+ readNextTranslationDir:
+ FindNext $R1 $R2
+ IfErrors doneFindingTranslations processCurrentTranslationDir
+
+ doneFindingTranslations:
+ FindClose $R1
+ RMDir "$INSTDIR\locale"
+
+ ; uninstaller
+ Delete "$INSTDIR\${GUIFICATIONS_UNINST_EXE}"
+ ; uninstaller shortcut
+ Delete "$SMPROGRAMS\Pidgin\${GUIFICATIONS_UNINSTALL_LNK}"
+
+ ; try to delete the Pidgin directories, in case it has already uninstalled
+ RMDir "$INSTDIR\plugins"
+ RMDir "$INSTDIR"
+ RMDir "$SMPROGRAMS\Pidgin"
+
+ Goto done
+
+ cant_uninstall:
+ MessageBox MB_OK $(un.GUIFICATIONS_UNINSTALL_ERROR_1) IDOK
+ Quit
+
+ no_rights:
+ MessageBox MB_OK $(un.GUIFICATIONS_UNINSTALL_ERROR_2) IDOK
+ Quit
+
+ done:
+SectionEnd
+
+Function .onInit
+ ${GetParameters} $R0
+ ClearErrors
+ ${GetOptions} $R0 "/L=" $R0
+ IfErrors +3
+ StrCpy $LANGUAGE $R0
+ Goto skip_lang
+
+ ; Select Language
+ ; Display Language selection dialog
+ !insertmacro MUI_LANGDLL_DISPLAY
+ skip_lang:
+
+FunctionEnd
+
+Function un.onInit
+ ; Get stored language preference
+ !insertmacro MUI_UNGETLANGUAGE
+FunctionEnd
+
+
+; Check that the selected installation dir contains pidgin.exe
+Function .onVerifyInstDir
+ IfFileExists $INSTDIR\pidgin.exe +2
+ Abort
+FunctionEnd
+
+; Check that the currently installed pidgin version is compatible with the version of guifications we are installing
+Function gf_checkPidginVersion
+ Push $R0
+
+ Push ${PIDGIN_VERSION}
+ Call CheckPidginVersion
+ Pop $R0
+
+ StrCmp $R0 ${PIDGIN_VERSION_OK} gf_checkPidginVersion_OK
+ StrCmp $R0 ${PIDGIN_VERSION_INCOMPATIBLE} +1 +6
+ Call GetPidginVersion
+ IfErrors +3
+ Pop $R0
+ MessageBox MB_OK|MB_ICONSTOP "$(BAD_PIDGIN_VERSION_1) $R0 $(BAD_PIDGIN_VERSION_2)"
+ goto +2
+ MessageBox MB_OK|MB_ICONSTOP "$(NO_PIDGIN_VERSION)"
+ Quit
+
+ gf_checkPidginVersion_OK:
+ Pop $R0
+FunctionEnd
+
+Function CheckUserInstallRights
+ ClearErrors
+ UserInfo::GetName
+ IfErrors Win9x
+ Pop $0
+ UserInfo::GetAccountType
+ Pop $1
+
+ StrCmp $1 "Admin" 0 +3
+ StrCpy $1 "HKLM"
+ Goto done
+ StrCmp $1 "Power" 0 +3
+ StrCpy $1 "HKLM"
+ Goto done
+ StrCmp $1 "User" 0 +3
+ StrCpy $1 "HKCU"
+ Goto done
+ StrCmp $1 "Guest" 0 +3
+ StrCpy $1 "NONE"
+ Goto done
+
+ ; Unknown error
+ StrCpy $1 "NONE"
+ Goto done
+
+ Win9x:
+ StrCpy $1 "HKLM"
+
+ done:
+ Push $1
+FunctionEnd
+
+; This is necessary because the uninstaller doesn't have access to installer functions
+; (it is identical to CheckUserInstallRights)
+Function un.CheckUserInstallRights
+ ClearErrors
+ UserInfo::GetName
+ IfErrors Win9x
+ Pop $0
+ UserInfo::GetAccountType
+ Pop $1
+
+ StrCmp $1 "Admin" 0 +3
+ StrCpy $1 "HKLM"
+ Goto done
+ StrCmp $1 "Power" 0 +3
+ StrCpy $1 "HKLM"
+ Goto done
+ StrCmp $1 "User" 0 +3
+ StrCpy $1 "HKCU"
+ Goto done
+ StrCmp $1 "Guest" 0 +3
+ StrCpy $1 "NONE"
+ Goto done
+
+ ; Unknown error
+ StrCpy $1 "NONE"
+ Goto done
+
+ Win9x:
+ StrCpy $1 "HKLM"
+
+ done:
+ Push $1
+FunctionEnd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/meson.build Wed Apr 07 03:16:51 2021 -0500
@@ -0,0 +1,5 @@
+configure_file(
+ input : 'pidgin-guifications.spec.in',
+ output : 'pidgin-guifications.spec',
+ configuration : version_conf)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/pidgin-guifications.spec.in Wed Apr 07 03:16:51 2021 -0500
@@ -0,0 +1,101 @@
+#
+# pidgin_major_ver and pidgin_minor_ver should be defined to match the minimum
+# Pidgin API version _required_ to build Guifications
+# Due to the way Pidgin checks plugin versions, we need to also ensure that
+# the correct minimum version of Pidgin is Require:'d based on what version of
+# the Pidgin headers we actually build with.
+#
+# This allows --define 'pidginver 1' to be used to build an rpm for Pidgin 1.x
+# default is to build for Pidgin 2.x
+%{!?pidginver: %{expand: %%define pidginver 2}}
+%define pidgin_major_ver %{pidginver}
+%define pidgin_minor_ver 0
+%define pidgin_next_major_ver %(echo $((%{pidgin_major_ver}+1)))
+%define pidgin_build_minor_ver %(pkg-config --modversion pidgin | awk -F. '{ print $2 }')
+
+Summary: Guifications Plugin for Pidgin
+Name: pidgin-guifications
+Version: @VERSION@
+Release: 0%{?pidgindist:.%{pidgindist}}
+License: GPL
+Group: Applications/Internet
+Url: http://pidgin.guifications.org
+Source: http://downloads.guifications.org/pidgin-plugins/Guifications2/%{name}-%{version}.tar.bz2
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+Requires: pidgin >= %{pidgin_major_ver}.%{pidgin_build_minor_ver}, pidgin < %{pidgin_next_major_ver}
+
+BuildRequires: pkgconfig, libtool, gettext
+BuildRequires: pidgin-devel >= %{pidgin_major_ver}.%{pidgin_minor_ver}, pidgin-devel < %{pidgin_next_major_ver}
+%if "%{_vendor}" == "MandrakeSoft"
+BuildRequires: libgtk+2.0_0-devel
+%else
+BuildRequires: gtk2-devel
+%endif
+
+%description
+Guifications is a graphical notification plugin for the open source instant messaging client Pidgin
+
+To rebuild for a specific Pidgin version:
+rpmbuild --rebuild %{name}-%{version}-%{release}.src.rpm --define 'pidgindist %{!?pidgindist:fc1}%{?pidgindist:%{pidgindist}}'
+
+%prep
+%setup -q
+
+%build
+%configure
+make %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR="$RPM_BUILD_ROOT" install
+
+%if "%{_vendor}" == "MandrakeSoft"
+mv -f $RPM_BUILD_ROOT%{_libdir}/pidgin/guifications $RPM_BUILD_ROOT%{_libdir}/pidgin/guifications.so || :
+%endif
+
+strip $RPM_BUILD_ROOT%{_libdir}/pidgin/*.so || :
+rm -f $RPM_BUILD_ROOT%{_libdir}/pidgin/*.la $RPM_BUILD_ROOT%{_libdir}/pidgin/*.a
+
+%find_lang guifications
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f guifications.lang
+%defattr(-, root, root)
+%doc AUTHORS ChangeLog COPYING README doc/flow.png doc/flow.dia doc/QUOTES
+%{_libdir}/pidgin/*.so
+%{_datadir}/pixmaps/pidgin/guifications
+
+%changelog
+* Mon Apr 30 2007 Stu Tomlinson <stu@nosnilmot.com>
+- Pidgin dropped the epochs, yay!
+- Use tar.bz2 for source
+
+* Sun Apr 1 2007 John Bailey <rekkanoryo@rekkanoryo.org>
+- :%s/gaim/pidgin/g and :%s/Gaim/Pidgin/g to prep for eventual Pidgin
+ releases.
+
+* Tue Dec 5 2006 John Bailey <rekkanoryo@rekkanoryo.org>
+- Fix the source URL to point to our new download location
+
+* Thu Oct 19 2006 Stu Tomlinson <stu@nosnilmot.com>
+- Fix finding the translations
+
+* Thu Nov 3 2005 Stu Tomlinson <stu@nosnilmot.com>
+- Default to building for Gaim 2.x with a bit of trickery to optionally
+ build for Gaim 1.x
+
+* Fri Apr 8 2005 Stu Tomlinson <stu@nosnilmot.com>
+- spec file cleanup, build vs. install dependency fixes, use %%find_lang,
+ tidy up release version, fix directory ownership
+
+* Fri Dec 17 2004 Stu Tomlinson <stu@nosnilmot.com>
+- Tweaks to the Gaim version dependencies
+
+* Sat Oct 9 2004 Stu Tomlinson <stu@nosnilmot.com>
+- Add Gaim version checks to match new Gaim versioning
+
+* Wed Jun 30 2004 Stu Tomlinson <stu@nosnilmot.com>
+- Initial spec file for Guifications 2
--- a/pidgin-guifications.spec.in Wed Apr 07 03:11:54 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-#
-# pidgin_major_ver and pidgin_minor_ver should be defined to match the minimum
-# Pidgin API version _required_ to build Guifications
-# Due to the way Pidgin checks plugin versions, we need to also ensure that
-# the correct minimum version of Pidgin is Require:'d based on what version of
-# the Pidgin headers we actually build with.
-#
-# This allows --define 'pidginver 1' to be used to build an rpm for Pidgin 1.x
-# default is to build for Pidgin 2.x
-%{!?pidginver: %{expand: %%define pidginver 2}}
-%define pidgin_major_ver %{pidginver}
-%define pidgin_minor_ver 0
-%define pidgin_next_major_ver %(echo $((%{pidgin_major_ver}+1)))
-%define pidgin_build_minor_ver %(pkg-config --modversion pidgin | awk -F. '{ print $2 }')
-
-Summary: Guifications Plugin for Pidgin
-Name: @PACKAGE@
-Version: @VERSION@
-Release: 0%{?pidgindist:.%{pidgindist}}
-License: GPL
-Group: Applications/Internet
-Url: http://pidgin.guifications.org
-Source: http://downloads.guifications.org/pidgin-plugins/Guifications2/%{name}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-
-Requires: pidgin >= %{pidgin_major_ver}.%{pidgin_build_minor_ver}, pidgin < %{pidgin_next_major_ver}
-
-BuildRequires: pkgconfig, libtool, gettext
-BuildRequires: pidgin-devel >= %{pidgin_major_ver}.%{pidgin_minor_ver}, pidgin-devel < %{pidgin_next_major_ver}
-%if "%{_vendor}" == "MandrakeSoft"
-BuildRequires: libgtk+2.0_0-devel
-%else
-BuildRequires: gtk2-devel
-%endif
-
-%description
-Guifications is a graphical notification plugin for the open source instant messaging client Pidgin
-
-To rebuild for a specific Pidgin version:
-rpmbuild --rebuild %{name}-%{version}-%{release}.src.rpm --define 'pidgindist %{!?pidgindist:fc1}%{?pidgindist:%{pidgindist}}'
-
-%prep
-%setup -q
-
-%build
-%configure
-make %{?_smp_mflags}
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make DESTDIR="$RPM_BUILD_ROOT" install
-
-%if "%{_vendor}" == "MandrakeSoft"
-mv -f $RPM_BUILD_ROOT%{_libdir}/pidgin/guifications $RPM_BUILD_ROOT%{_libdir}/pidgin/guifications.so || :
-%endif
-
-strip $RPM_BUILD_ROOT%{_libdir}/pidgin/*.so || :
-rm -f $RPM_BUILD_ROOT%{_libdir}/pidgin/*.la $RPM_BUILD_ROOT%{_libdir}/pidgin/*.a
-
-%find_lang guifications
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f guifications.lang
-%defattr(-, root, root)
-%doc AUTHORS ChangeLog COPYING README doc/flow.png doc/flow.dia doc/QUOTES
-%{_libdir}/pidgin/*.so
-%{_datadir}/pixmaps/pidgin/guifications
-
-%changelog
-* Mon Apr 30 2007 Stu Tomlinson <stu@nosnilmot.com>
-- Pidgin dropped the epochs, yay!
-- Use tar.bz2 for source
-
-* Sun Apr 1 2007 John Bailey <rekkanoryo@rekkanoryo.org>
-- :%s/gaim/pidgin/g and :%s/Gaim/Pidgin/g to prep for eventual Pidgin
- releases.
-
-* Tue Dec 5 2006 John Bailey <rekkanoryo@rekkanoryo.org>
-- Fix the source URL to point to our new download location
-
-* Thu Oct 19 2006 Stu Tomlinson <stu@nosnilmot.com>
-- Fix finding the translations
-
-* Thu Nov 3 2005 Stu Tomlinson <stu@nosnilmot.com>
-- Default to building for Gaim 2.x with a bit of trickery to optionally
- build for Gaim 1.x
-
-* Fri Apr 8 2005 Stu Tomlinson <stu@nosnilmot.com>
-- spec file cleanup, build vs. install dependency fixes, use %%find_lang,
- tidy up release version, fix directory ownership
-
-* Fri Dec 17 2004 Stu Tomlinson <stu@nosnilmot.com>
-- Tweaks to the Gaim version dependencies
-
-* Sat Oct 9 2004 Stu Tomlinson <stu@nosnilmot.com>
-- Add Gaim version checks to match new Gaim versioning
-
-* Wed Jun 30 2004 Stu Tomlinson <stu@nosnilmot.com>
-- Initial spec file for Guifications 2