From 3482a7f8755e9ad6511abe17b15633de9e658016 Mon Sep 17 00:00:00 2001 From: "S. Razi Alavizadeh" Date: Mon, 19 Nov 2012 20:36:39 +0330 Subject: [PATCH 1/5] Installer script improved: -Ask for terminate running instance. -Prevent multiple installer instances -Register more info within uninstaller section --- windows/FindProcDLL.dll | Bin 0 -> 28160 bytes windows/KillProcDLL.dll | Bin 0 -> 36864 bytes windows/installer.nsi | 41 ++++++++++++++++++++++++++++---- windows/languages.nsh | 50 +++++++++++++++++++++++++++++++++++++++- 4 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 windows/FindProcDLL.dll create mode 100644 windows/KillProcDLL.dll diff --git a/windows/FindProcDLL.dll b/windows/FindProcDLL.dll new file mode 100644 index 0000000000000000000000000000000000000000..22c8398f1e346ba704eec5cf269931e9e7fe3401 GIT binary patch literal 28160 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 literal 0 HcmV?d00001 diff --git a/windows/installer.nsi b/windows/installer.nsi index b36ef9673..cf9c9fd90 100644 --- a/windows/installer.nsi +++ b/windows/installer.nsi @@ -1,4 +1,7 @@ RequestExecutionLevel admin +!addplugindir "wininstall\" + +!include "FileFunc.nsh" !include "wininstall\FileAssociation.nsh" SetCompressor /SOLID /FINAL lzma @@ -66,8 +69,16 @@ ShowUnInstDetails show Section !$(TITLE_SecMain) SecMain SectionIn RO - KillProcDLL::KillProc "qupzilla.exe" - Sleep 100 + FindProcDLL::FindProc "qupzilla.exe" + IntCmp $R0 1 0 notRunning + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(MSG_RunningInstance)" /SD IDOK IDCANCEL AbortInstallation + KillProcDLL::KillProc "qupzilla.exe" + Sleep 100 + Goto notRunning +AbortInstallation: + Abort "$(MSG_InstallationCanceled)" + +notRunning: SetOverwrite on SetOutPath "$INSTDIR" @@ -318,6 +329,14 @@ Section -Uninstaller WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\qupzilla.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "QupZilla Team" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "HelpLink" "https://github.com/QupZilla/qupzilla/wiki" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallSource" "$EXEDIR" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://www.qupzilla.com" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "http://blog.qupzilla.com/" + ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 + WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "EstimatedSize" "$0" SectionEnd Section -MSVC @@ -329,9 +348,16 @@ Section -MSVC SectionEnd Section Uninstall - KillProcDLL::KillProc "qupzilla.exe" - Sleep 100 + FindProcDLL::FindProc "qupzilla.exe" + IntCmp $R0 1 0 notRunning + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(MSG_RunningInstance)" /SD IDOK IDCANCEL AbortInstallation + KillProcDLL::KillProc "qupzilla.exe" + Sleep 100 + Goto notRunning +AbortInstallation: + Abort "$(MSG_InstallationCanceled)" +notRunning: SetShellVarContext all Delete "$DESKTOP\QupZilla.lnk" RMDir /r "$INSTDIR" @@ -345,6 +371,13 @@ SectionEnd BrandingText "${PRODUCT_NAME} ${PRODUCT_VERSION} Installer" Function .onInit + ;Prevent Multiple Instances + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "QupZillaInstaller-4ECB4694-2C39-4f93-9122-A986344C4E7B") i .r1 ?e' + Pop $R0 + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "QupZilla installer is already running!" /SD IDOK + Abort + ;Language selection dialog¨ ;Return when running silent instalation diff --git a/windows/languages.nsh b/windows/languages.nsh index 6d02ec92b..7d70d5c3a 100644 --- a/windows/languages.nsh +++ b/windows/languages.nsh @@ -15,6 +15,9 @@ LangString DESC_SecPlugins ${LANG_ENGLISH} "Other plugins available to install." LangString DESC_SecDesktop ${LANG_ENGLISH} "Add launcher to desktop." LangString DESC_SecExtensions ${LANG_ENGLISH} "Associate QupZilla with .htm and .html files" LangString DESC_SecThemes ${LANG_ENGLISH} "Additional themes for QupZilla" +; +LangString MSG_RunningInstance ${LANG_ENGLISH} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_InstallationCanceled ${LANG_ENGLISH} "Process canceled by user." ;;;;Czech LangString TITLE_SecMain ${LANG_CZECH} "Hlavní komponenty" @@ -325,7 +328,7 @@ LangString TITLE_SecMain ${LANG_FARSI} "بخش اصلی" LangString TITLE_SecTranslations ${LANG_FARSI} "برگردان‌ها" LangString TITLE_SecPlugins ${LANG_FARSI} "افزونه‌ها" LangString TITLE_SecDesktop ${LANG_FARSI} "آیکون میزکار" -LangString TITLE_SecExtensions ${LANG_FARSI} "اختصاص برای بازکردن فایل‌ها" +LangString TITLE_SecExtensions ${LANG_FARSI} "تخصیص فایل" LangString TITLE_SecThemes ${LANG_FARSI} "فرهشت‌ها" ; LangString DESC_SecMain ${LANG_FARSI} "بخش اصلی نرم‌افزار." @@ -334,6 +337,9 @@ LangString DESC_SecPlugins ${LANG_FARSI} "افزونه‌های دیگر که ب LangString DESC_SecDesktop ${LANG_FARSI} "افزودن میان‌برِ آغازگر به میزکار" LangString DESC_SecExtensions ${LANG_FARSI} "کوپزیلا را برای بازکردن فایل‌های ‎.htm و ‎.html اختصاص می‌دهد." LangString DESC_SecThemes ${LANG_FARSI} "فرهشت‌های اضافی برای کوپزیلا" +; +LangString MSG_RunningInstance ${LANG_FARSI} "کوپزیلا هم‌اکنون در حال اجراست! آیا می‌خواهید برنامه نصب تلاش کند به اجرای آن خاتمه دهد؟" +LangString MSG_InstallationCanceled ${LANG_FARSI} "فرایند توسط کاربر لغو گردید." ;;;;;;;;; ;;;;;;;;; ; Unfinished translations @@ -389,3 +395,45 @@ LangString TITLE_SecThemes ${LANG_SPANISH} "Themes" LangString DESC_SecThemes ${LANG_KOREAN} "Additional themes for QupZilla" LangString DESC_SecThemes ${LANG_RUSSIAN} "Additional themes for QupZilla" LangString DESC_SecThemes ${LANG_SPANISH} "Additional themes for QupZilla" + +LangString MSG_RunningInstance ${LANG_CZECH} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_SLOVAK} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_GERMAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_DUTCH} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_PORTUGUESE} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_GREEK} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_FRENCH} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_ITALIAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_ROMANIAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_TRADCHINESE} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_SIMPCHINESE} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_INDONESIAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_GEORGIAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_JAPANESE} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_SWEDISH} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_POLISH} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_UKRAINIAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_KOREAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_RUSSIAN} "QupZilla is already running! Do you want the installer try to terminate it?" +LangString MSG_RunningInstance ${LANG_SPANISH} "QupZilla is already running! Do you want the installer try to terminate it?" + +LangString MSG_InstallationCanceled ${LANG_CZECH} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_SLOVAK} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_GERMAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_DUTCH} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_PORTUGUESE} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_GREEK} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_FRENCH} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_ITALIAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_ROMANIAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_TRADCHINESE} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_SIMPCHINESE} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_INDONESIAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_GEORGIAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_JAPANESE} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_SWEDISH} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_POLISH} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_UKRAINIAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_KOREAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_RUSSIAN} "Process canceled by user." +LangString MSG_InstallationCanceled ${LANG_SPANISH} "Process canceled by user." From 25410eb00f4051eee0f35080a85322a1c585dc50 Mon Sep 17 00:00:00 2001 From: "S. Razi Alavizadeh" Date: Mon, 19 Nov 2012 21:59:04 +0330 Subject: [PATCH 2/5] NSIS script improved: -'FileAssociation.nsh' rewritten and renamed to 'AllAssociation.nsh' -Now supports new association method on Vista and newer version of Windows. -Support register as protocol handler and add option for set as default browser. -Backup old association even on Vista and newer version of Windows and restore them when uninstalling. -Support 'Default Programs' on Vista and newer version of Windows. --- windows/AllAssociation.nsh | 456 ++++++++++++++++++++++++++++++++++++ windows/AppAssocReg.dll | Bin 0 -> 4608 bytes windows/FileAssociation.nsh | 190 --------------- windows/installer.nsi | 70 +++++- windows/languages.nsh | 118 ++++++++++ windows/registry.dll | Bin 0 -> 25088 bytes 6 files changed, 636 insertions(+), 198 deletions(-) create mode 100644 windows/AllAssociation.nsh create mode 100644 windows/AppAssocReg.dll delete mode 100644 windows/FileAssociation.nsh create mode 100644 windows/registry.dll diff --git a/windows/AllAssociation.nsh b/windows/AllAssociation.nsh new file mode 100644 index 000000000..8d71ac186 --- /dev/null +++ b/windows/AllAssociation.nsh @@ -0,0 +1,456 @@ +/* +_____________________________________________________________________________ + + All Association +_____________________________________________________________________________ + + + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ; Date: 2012-Nov-18, S. Razi Alavizadeh, v0.1 ; + ; Some Codes are based on code taken from: ; + ; http://nsis.sourceforge.net/File_Association ; + ; Ability to register protocol and extention associations. ; + ; It supports old association method and new method by using ; + ; IApplicationAssociationRegistration APIs. ; + ; that needed 'AppAssocReg' plugins, downloadable from: ; + ; http://nsis.sourceforge.net/SetVistaDefaultApp_plug-in ; + ; and also add support for set as default backuped association when ; + ; uninstalling. This needed 'Registery' plugins. ; + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + Requirment: + 1. 'AppAssocReg' plugins. + 2. 'Registery' plugins. + + Usage in script: + 1. !include "AllAssociation.nsh" + 2. [Section|Function] + ${AllAssociationFunction} "Param1" "Param2" "..." $var + [SectionEnd|FunctionEnd] + + AllAssociationFunction=[RegisterAssociation|UnRegisterAssociation|CreateProgId|UpdateSystemIcons|SetAsDefaultNoAppName] + +_____________________________________________________________________________ + + ${RegisterAssociation} "[assoc_name]" "[executable]" "[prog_id]" "[description]" "[icon]" "[type]" + +"[assoc_name]" ; assoc_name, which is file format's extention if type is "file" and is protocol's name if type is "protocol". + ; +"[executable]" ; executable which opens the file format or is protocol handler. + ; +"[prog_id]" ; registery internal id for assoc_name, on Vista+ if type is "protocol" this is our registered ProgId for assoc_name and is used for comparison. + ; +"[description]" ; description for the assoc_name. This will be display in Windows Explorer. + ; +"[icon]" ; icon path for this association. + ; +"[type]" ; type of association. "file" for extention and "protocol" for protocol handler. + ; + + ${UnRegisterAssociation} "[assoc_name]" "[prog_id]" "[executable]" "[type]" + +"[assoc_name]" ; assoc_name, which is file format's extention if type is "file" and is protocol's name if type is "protocol". + ; +"[prog_id]" ; registery internal id for assoc_name + ; +"[executable]" ; executable which opens the file format or is protocol handler. + ; +"[type]" ; type of association. "file" for extention and "protocol" for protocol handler. + ; + + ${CreateProgId} "[prog_id]" "[executable]" "[description]" "[icon]" + +"[prog_id]" ; registery internal id for assoc_name + ; +"[executable]" ; executable which opens the file format or is protocol handler. + ; +"[description]" ; description for the assoc_name. This will be display in Windows Explorer. + ; +"[icon]" ; icon path for this prog_id. + ; + + + ${SetAsDefaultNoAppName} "[prog_id]" "[assoc_name]" "[type]" + +"[prog_id]" ; registery internal id for assoc_name + ; +"[assoc_name]" ; assoc_name, which is file format's extention if type is "file" and is protocol's name if type is "protocol". + ; +"[type]" ; type of association. "file" for extention and "protocol" for protocol handler. + ; + + ${UpdateSystemIcons} ; it has not arguments and just notifies OS for updating icons for new associations. + +_____________________________________________________________________________ + + Macros +_____________________________________________________________________________ + + Change log window verbosity (default: 3=no script) + + Example: + !include "AllAssociation.nsh" + !insertmacro RegisterAssociation + ${AllAssociation_VERBOSE} 4 # all verbosity + !insertmacro UnRegisterAssociation + ${AllAssociation_VERBOSE} 3 # no script +*/ + + +!ifndef AllAssociation_INCLUDED +!define AllAssociation_INCLUDED + +!include Util.nsh + +!verbose push +!verbose 3 +!ifndef _AllAssociation_VERBOSE + !define _AllAssociation_VERBOSE 3 +!endif +!verbose ${_AllAssociation_VERBOSE} +!define AllAssociation_VERBOSE `!insertmacro AllAssociation_VERBOSE` +!verbose pop + +!macro AllAssociation_VERBOSE _VERBOSE + !verbose push + !verbose 3 + !undef _AllAssociation_VERBOSE + !define _AllAssociation_VERBOSE ${_VERBOSE} + !verbose pop +!macroend + + +; define some registery macros +!define RegistryRead `!insertmacro RegistryRead` + +!macro RegistryRead _PATH _VALUE _STRING _TYPE + registry::_Read /NOUNLOAD `${_PATH}` `${_VALUE}` + Pop ${_STRING} + Pop ${_TYPE} +!macroend + + +!define RegistryWrite `!insertmacro RegistryWrite` + +!macro RegistryWrite _PATH _VALUE _STRING _TYPE _ERR + registry::_Write /NOUNLOAD `${_PATH}` `${_VALUE}` `${_STRING}` `${_TYPE}` + Pop ${_ERR} +!macroend + +!define RegistryFind `!insertmacro RegistryFind` + +!macro RegistryFind _HANDLE _PATH _VALUEORKEY _STRING _TYPE + registry::_Find /NOUNLOAD `${_HANDLE}` + Pop ${_PATH} + Pop ${_VALUEORKEY} + Pop ${_STRING} + Pop ${_TYPE} +!macroend + +!define RegistryOpen `!insertmacro RegistryOpen` + +!macro RegistryOpen _PATH _OPTIONS _HANDLE + registry::_Open /NOUNLOAD `${_PATH}` `${_OPTIONS}` + Pop ${_HANDLE} +!macroend + +!macro RegisterAssociationCall _EXTENSION _EXECUTABLE _PROG_ID _DESCRIPTION _ICON _TYPE + !verbose push + !verbose ${_AllAssociation_VERBOSE} + + Push `${_EXECUTABLE}` + Push `${_PROG_ID}` + Push `${_DESCRIPTION}` + Push `${_ICON}` + + ${CallArtificialFunction} CreateProgId_ + + + Push `${_PROG_ID}` + Push `${_EXECUTABLE}` + Push `${_EXTENSION}` + Push `${_TYPE}` + + ${CallArtificialFunction} RegisterAssociation_ + + !verbose pop +!macroend + +!macro UnRegisterAssociationCall _EXTENSION _PROG_ID _EXECUTABLE _TYPE + !verbose push + !verbose ${_AllAssociation_VERBOSE} + Push `${_EXTENSION}` + Push `${_EXECUTABLE}` + Push `${_PROG_ID}` + Push `${_TYPE}` + + ${CallArtificialFunction} UnRegisterAssociation_ + + ; backuped ProgId was pushed from UnRegisterAssociation_ + Push `${_EXTENSION}` + Push `${_TYPE}` ; type of association + ${CallArtificialFunction} SetAsDefaultNoAppName_ + + !verbose pop +!macroend + +!macro CreateProgIdCall _PROG_ID _EXECUTABLE _DESCRIPTION _ICON + !verbose push + !verbose ${_AllAssociation_VERBOSE} + Push `${_EXECUTABLE}` + Push `${_PROG_ID}` + Push `${_DESCRIPTION}` + Push `${_ICON}` + + ${CallArtificialFunction} CreateProgId_ + !verbose pop +!macroend + +!macro SetAsDefaultNoAppNameCall _PROG_ID _EXTENSION _TYPE + !verbose push + !verbose ${_AllAssociation_VERBOSE} + Push `${_PROG_ID}` + Push `${_EXTENSION}` + Push `${_TYPE}` + + ${CallArtificialFunction} SetAsDefaultNoAppName_ + !verbose pop +!macroend + +!define SetAsDefaultNoAppName `!insertmacro SetAsDefaultNoAppNameCall` +!define un.SetAsDefaultNoAppName `!insertmacro SetAsDefaultNoAppNameCall` + +!macro SetAsDefaultNoAppName +!macroend + +!macro un.SetAsDefaultNoAppName +!macroend + +!macro SetAsDefaultNoAppName_ + !verbose push + !verbose ${_AllAssociation_VERBOSE} + + Pop $R0 ; TYPE + Pop $R1 ; EXTENSION + Pop $R2 ; PROG_ID + + StrCmp $R2 "No ProgId Pushed" NoBackupedProgId 0 + StrCmp $R2 "" NoBackupedProgId 0 + StrCmp $R1 "" NoBackupedProgId 0 + ${RegistryOpen} "HKLM\SOFTWARE\RegisteredApplications" "/K=0 /V=1 /S=0 /B=1" $R8 ; R8 = first registery handle + StrCmp $R8 0 close 0 +loop1: + ${RegistryFind} "$R8" $1 $R3 $3 $4 ; $R3 = AppRegisteredName + StrCmp $1 "" close 0 + + ${RegistryOpen} "HKLM\$3" "/K=0 /V=1 /S=0 /B=1 /N='$R1'" $R9 ; R9 = second registery handle + StrCmp $R9 0 loop1 0 +loop2: + ${RegistryFind} "$R9" $1 $2 $R4 $4 ; $R4 = ProgId registered for EXTENSION + StrCmp $1 "" loop1 0 + StrCmp $R4 "$R2" 0 loop2 + + AppAssocReg::SetAppAsDefault "$R3" "$R1" "$R0" + +close: + registry::_Close /NOUNLOAD "$R9" + registry::_Close /NOUNLOAD "$R8" + registry::_Unload + +NoBackupedProgId: + !verbose pop +!macroend + +!define CreateProgId `!insertmacro CreateProgIdCall` +!define un.CreateProgId `!insertmacro CreateProgIdCall` + +!macro CreateProgId +!macroend + +!macro un.CreateProgId +!macroend + +!macro CreateProgId_ + !verbose push + !verbose ${_AllAssociation_VERBOSE} + + Pop $R0 ;ICON + Pop $R1 ;DESCRIPTION + Pop $R2 ;PROG_ID + Pop $R3 ;EXECUTABLE + + ReadRegStr $0 HKCR $R2 "" +; StrCmp $0 "" 0 JustSkip ; if icon and description are present then just skip + WriteRegStr HKCR "$R2" "" "$R1" + WriteRegStr HKCR "$R2\shell" "" "open" + WriteRegStr HKCR "$R2\DefaultIcon" "" "$R0" +;JustSkip: + WriteRegStr HKCR "$R2\shell\open\command" "" '"$R3" "%1"' + WriteRegStr HKCR "$R2\shell\edit" "" "Edit $R1" + WriteRegStr HKCR "$R2\shell\edit\command" "" '"$R3" "%1"' + + !verbose pop +!macroend + +!define RegisterAssociation `!insertmacro RegisterAssociationCall` +!define un.RegisterAssociation `!insertmacro RegisterAssociationCall` + +!macro RegisterAssociation +!macroend + +!macro un.RegisterAssociation +!macroend + +!macro RegisterAssociation_ + !verbose push + !verbose ${_AllAssociation_VERBOSE} + + Pop $R0 ;type = file or protocol + Pop $R1 ;association name = ext or protocol + Pop $R2 ;exe + Pop $R3 ;prog_id + + + StrCmp "$R0" "file" 0 NoFile +; file + ReadRegStr $1 HKCR $R1 "" ; read current file association + StrCmp "$1" "" NoFileExtBackup ; is it empty + StrCmp "$1" "$R3" NoFileExtBackup ; it is our own + WriteRegStr HKCR $R1 "backup_val" "$1" ; backup current value +NoFileExtBackup: + WriteRegStr HKCR $R1 "" "$R3" ; set our file association +Goto VistaPlus + +NoFile: +; Protocol + StrCmp "$R0" "protocol" 0 NotSupported + ; write protocol flag + WriteRegStr HKCR $R1 "URL Protocol" "" + ;get prog_id of current default + + AppAssocReg::QueryCurrentDefault $R1 "protocol" "user" + Pop $1 + StrCmp "$1" "method failed" NoProgID 0 + StrCmp "$1" "method not available" NoProgID 0 + StrCmp "$1" "$R3" NoProgID 0 ; it is our own + WriteRegStr HKCR "$R1\shell\open\command" "backup_progid" "$1" ; backup current progid +NoProgID: +; ReadRegStr $1 HKCR "$R1\shell\open\command" "" ; read current protocol association + ; some applications write this as REG_EXPAND_SZ and don't work with REG_SZ (e.g.: some version of Opera) + ${RegistryRead} "HKCR\$R1\shell\open\command" "" '$1' '$0' ; read current protocol association and its registery type + StrCmp "$1" "" NoProtocolBackup ; is it empty + StrCmp "$1" '"$R2" "%1"' NoProtocolBackup ; it is our own + ;WriteRegStr HKCR "$R1\shell\open\command" "backup_val" "$1" ; backup current value + ${RegistryWrite} "HKCR\$R1\shell\open\command" "backup_val" '$1' '$0' '$2'; backup current value and its registery type +NoProtocolBackup: + WriteRegStr HKCR "$R1\shell\open\command" "" '"$R2" "%1"' ; set our file association +;Goto VistaPlus + +; TODO: type = startMenu or type = mime + +VistaPlus: + ;Vista and newer need some more works + AppAssocReg::SetAppAsDefault "${PRODUCT_NAME}" "$R1" "$R0" + +NotSupported: + registry::_Unload + !verbose pop +!macroend + +!define UnRegisterAssociation `!insertmacro UnRegisterAssociationCall` +!define un.UnRegisterAssociation `!insertmacro UnRegisterAssociationCall` + +!macro UnRegisterAssociation +!macroend + +!macro un.UnRegisterAssociation +!macroend + +!macro UnRegisterAssociation_ + !verbose push + !verbose ${_AllAssociation_VERBOSE} + + Pop $R3 ;type = file or protocol + Pop $R2 ;prog_id + Pop $R1 ;exe + Pop $R0 ;association name = ext or protocol + + StrCmp "$R3" "file" 0 NoFile +; file + ReadRegStr $1 HKCR $R0 "" + StrCmp $1 $R2 0 NoOwn ; only do this if we own it + ReadRegStr $1 HKCR $R0 "backup_val" + StrCmp $1 "" 0 RestoreFile ; if backup="" then delete the whole key + Push `"No ProgId Pushed"` + DeleteRegKey HKCR $R0 + Goto NoOwn + + RestoreFile: + Push `$1` + WriteRegStr HKCR $R0 "" $1 + DeleteRegValue HKCR $R0 "backup_val" + DeleteRegKey HKCR $R2 ;Delete key with association name settings + Goto NoOwn + +NoFile: +; Protocol + StrCmp "$R3" "protocol" 0 NoOwn + ReadRegStr $1 HKCR "$R0\shell\open\command" "" + StrCmp $1 '"$R1" "%1"' 0 NoOwn ; only do this if we own it + ; ReadRegStr $1 HKCR "$R0\shell\open\command" "backup_val" + ${RegistryRead} "HKEY_CLASSES_ROOT\$R0\shell\open\command" "backup_val" '$1' '$0' ; read current protocol association and its registery type + StrCmp $1 "" 0 RestoreProtocol ; if backup="" then delete the whole key + Push `"No ProgId Pushed"` + DeleteRegKey HKCR "$R0\shell\open\command" + Goto NoOwn + + RestoreProtocol: + ReadRegStr $2 HKCR "$R0\shell\open\command" "backup_progid" + StrCmp $2 "" 0 HasProgId + Push `"No ProgId Pushed"` + Goto NoProgID + HasProgId: + Push `$2` + NoProgID: + ;WriteRegStr HKCR "$R0\shell\open\command" "" $1 + ${RegistryWrite} "HKEY_CLASSES_ROOT\$R0\shell\open\command" "" '$1' '$0' '$2' + DeleteRegValue HKCR "$R0\shell\open\command" "backup_val" + DeleteRegValue HKCR "$R0\shell\open\command" "backup_progid" + StrCmp $R2 "" NoOwn 0 ;Delete protocol association if it's present + DeleteRegKey HKCR $R2 ;Delete key with association name settings +;Goto NoOwn + +; TODO: type = startMenu or type = mime + + NoOwn: + registry::_Unload + !verbose pop +!macroend + +!define UpdateSystemIcons `!insertmacro UpdateSystemIcons_` +!define un.UpdateSystemIcons `!insertmacro UpdateSystemIcons_` + +!macro UpdateSystemIcons +!macroend + +!macro un.UpdateSystemIcons +!macroend + + ; !defines for use with SHChangeNotify +!ifdef SHCNE_ASSOCCHANGED + !undef SHCNE_ASSOCCHANGED +!endif +!define SHCNE_ASSOCCHANGED 0x08000000 + +!ifdef SHCNF_FLUSHNOWAIT + !undef SHCNF_FLUSHNOWAIT +!endif +!define SHCNF_FLUSHNOWAIT 0x3000 + +!macro UpdateSystemIcons_ +; Using the system.dll plugin to call the SHChangeNotify Win32 API function so we +; can update the shell. + System::Call "shell32::SHChangeNotify(i,i,i,i) (${SHCNE_ASSOCCHANGED}, ${SHCNF_FLUSHNOWAIT}, 0, 0)" +!macroend +!endif # !AllAssociation_INCLUDED diff --git a/windows/AppAssocReg.dll b/windows/AppAssocReg.dll new file mode 100644 index 0000000000000000000000000000000000000000..b0d7f23bc1f1946ee749f3d694f38af5adbd4f76 GIT binary patch literal 4608 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 z%0A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 HrzP;;Ipv25 literal 0 HcmV?d00001 From 3007ffe13124854f4f873823848e2220f288db1e Mon Sep 17 00:00:00 2001 From: "S. Razi Alavizadeh" Date: Tue, 20 Nov 2012 11:30:17 +0330 Subject: [PATCH 3/5] Create separate ProgIds for HTTP and HTTPS protocols. because of icon conflicting! (protocols use icon at index 0 and extentions use icon at index 1 of executable) --- windows/installer.nsi | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/windows/installer.nsi b/windows/installer.nsi index 38881a077..2ff7f18a3 100644 --- a/windows/installer.nsi +++ b/windows/installer.nsi @@ -310,8 +310,8 @@ SectionGroup $(TITLE_SecSetASDefault) SecSetASDefault SectionEnd Section $(TITLE_SecProtocols) SecProtocols - ${RegisterAssociation} "http" "$INSTDIR\qupzilla.exe" "QupZilla.HTML" "" "$INSTDIR\qupzilla.exe,0" "protocol" - ${RegisterAssociation} "https" "$INSTDIR\qupzilla.exe" "QupZilla.HTML" "" "$INSTDIR\qupzilla.exe,0" "protocol" + ${RegisterAssociation} "http" "$INSTDIR\qupzilla.exe" "QupZilla.HTTP" "URL:HyperText Transfer Protocol" "$INSTDIR\qupzilla.exe,0" "protocol" + ${RegisterAssociation} "https" "$INSTDIR\qupzilla.exe" "QupZilla.HTTPS" "URL:HyperText Transfer Protocol with Privacy" "$INSTDIR\qupzilla.exe,0" "protocol" ${UpdateSystemIcons} SectionEnd SectionGroupEnd @@ -390,8 +390,8 @@ notRunning: ${UnRegisterAssociation} ".htm" "QupZilla.HTM" "$INSTDIR\qupzilla.exe" "file" ${UnRegisterAssociation} ".html" "QupZilla.HTML" "$INSTDIR\qupzilla.exe" "file" - ${UnRegisterAssociation} "http" "" "$INSTDIR\qupzilla.exe" "protocol" - ${UnRegisterAssociation} "https" "" "$INSTDIR\qupzilla.exe" "protocol" + ${UnRegisterAssociation} "http" "QupZilla.HTTP" "$INSTDIR\qupzilla.exe" "protocol" + ${UnRegisterAssociation} "https" "QupZilla.HTTPS" "$INSTDIR\qupzilla.exe" "protocol" ${UpdateSystemIcons} SectionEnd @@ -467,6 +467,8 @@ Function RegisterCapabilities ;(e.g.: user uses "Default Programs" on Win7 or Vista to set QupZilla as default.) ${CreateProgId} "QupZilla.HTM" "$INSTDIR\qupzilla.exe" $(FILE_Htm) "$INSTDIR\qupzilla.exe,1" ${CreateProgId} "QupZilla.HTML" "$INSTDIR\qupzilla.exe" $(FILE_Html) "$INSTDIR\qupzilla.exe,1" + ${CreateProgId} "QupZilla.HTTP" "$INSTDIR\qupzilla.exe" "URL:HyperText Transfer Protocol" "$INSTDIR\qupzilla.exe,0" + ${CreateProgId} "QupZilla.HTTPS" "$INSTDIR\qupzilla.exe" "URL:HyperText Transfer Protocol with Privacy" "$INSTDIR\qupzilla.exe,0" ; note: these lines just introduce capabilities of QupZilla to OS and don't change defaults! WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}" "ApplicationDescription" "$(PRODUCT_DESC)" @@ -474,14 +476,10 @@ Function RegisterCapabilities WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}" "ApplicationName" "${PRODUCT_NAME}" WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\FileAssociations" ".htm" "QupZilla.HTM" WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\FileAssociations" ".html" "QupZilla.HTML" - WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "http" "QupZilla.HTML" - WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "https" "QupZilla.HTML" + WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "http" "QupZilla.HTTP" + WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "https" "QupZilla.HTTPS" WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\Startmenu" "StartMenuInternet" "$INSTDIR\qupzilla.exe" WriteRegStr HKLM "SOFTWARE\RegisteredApplications" "${PRODUCT_NAME}" "${PRODUCT_CAPABILITIES_KEY}" ${EndIf} !endif FunctionEnd - -Function IsRunningInstance - -FunctionEnd From 65909ed935aa5e09b67d0614a0ebe9972a5de922 Mon Sep 17 00:00:00 2001 From: "S. Razi Alavizadeh" Date: Tue, 20 Nov 2012 12:37:29 +0330 Subject: [PATCH 4/5] Delete DLLs: There may be some copyright issues. --- windows/AppAssocReg.dll | Bin 4608 -> 0 bytes windows/FindProcDLL.dll | Bin 28160 -> 0 bytes windows/KillProcDLL.dll | Bin 36864 -> 0 bytes windows/registry.dll | Bin 25088 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 windows/AppAssocReg.dll delete mode 100644 windows/FindProcDLL.dll delete mode 100644 windows/KillProcDLL.dll delete mode 100644 windows/registry.dll diff --git a/windows/AppAssocReg.dll b/windows/AppAssocReg.dll deleted file mode 100644 index b0d7f23bc1f1946ee749f3d694f38af5adbd4f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 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 diff --git a/windows/registry.dll b/windows/registry.dll deleted file mode 100644 index 3c8bc1eabd75da114938ee9728d0df3305674308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25088 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 z%0A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 HrzP;;Ipv25 From b88c917d544b319dc528cf9bea129b746ff2198c Mon Sep 17 00:00:00 2001 From: "S. Razi Alavizadeh" Date: Tue, 20 Nov 2012 13:11:29 +0330 Subject: [PATCH 5/5] NSIS Script: added some comments. --- windows/installer.nsi | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/windows/installer.nsi b/windows/installer.nsi index 2ff7f18a3..05d29d137 100644 --- a/windows/installer.nsi +++ b/windows/installer.nsi @@ -1,4 +1,15 @@ -RequestExecutionLevel admin +; QupZilla Windows Installer NSIS Script +; Copyright (C) 2010-2012 David Rosca +; +; For compiling this script you need following plugins: +; FindProcDLL_plug-in, KillProcDLL_plug-in and 'AllAssociation.nsh' needs +; Registry_plug-in, Application_Association_Registration_plug-in +; Unicode version of them can be downloaded from: +; http://sourceforge.net/projects/findkillprocuni/files/bin/ +; http://nsis.sourceforge.net/Application_Association_Registration_plug-in +; http://nsis.sourceforge.net/Registry_plug-in + +RequestExecutionLevel admin ; WinVer.nsh was added in the same release that RequestExecutionLevel so check ; if ___WINVER__NSH___ is defined to determine if RequestExecutionLevel is