From 8f7c5f1c404cc1ac426550497b5c95e8bff9d274 Mon Sep 17 00:00:00 2001 From: Arindam Chaudhuri Date: Wed, 8 Jan 2020 00:43:49 +0530 Subject: [PATCH] project renamed from qmageview to photoquick --- .gitignore | 2 +- README.md | 10 +- src/canvas.cpp | 2 +- src/canvas.h | 2 - src/common.cpp | 2 +- src/common.h | 2 - src/filters.cpp | 2 +- src/images/image.png | Bin 376 -> 385 bytes src/images/photoquick.ico | Bin 0 -> 4286 bytes src/images/photoquick.jpg | Bin 0 -> 24147 bytes src/images/qmageview.jpg | Bin 31485 -> 0 bytes src/main.cpp | 11 +- src/main.h | 2 - src/mainwindow.ui | 2 +- src/photogrid.cpp | 2 +- src/photogrid.h | 1 - src/{qmageview.pro => photoquick.pro} | 3 +- src/resources.qrc | 2 +- windows/EnvVarUpdate.nsh | 327 -------------------------- windows/Installer Script.nsi | 74 +++--- 20 files changed, 59 insertions(+), 387 deletions(-) create mode 100644 src/images/photoquick.ico create mode 100644 src/images/photoquick.jpg delete mode 100644 src/images/qmageview.jpg rename src/{qmageview.pro => photoquick.pro} (95%) delete mode 100644 windows/EnvVarUpdate.nsh diff --git a/.gitignore b/.gitignore index 8f465e1..3deb3a6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,6 @@ moc_* qrc_* ui_* Makefile -qmageview +photoquick TODO diff --git a/README.md b/README.md index dba47c8..30081f3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# QmageView (for Linux and Windows) +# PhotoQuick (for Linux and Windows) A simple image viewer with some useful features (written in qt4). ### Description @@ -49,16 +49,16 @@ To uninstall, run ... ### Build (Windows) Download Qt 4.8.7 and minGW32 add Qt/4.8.7/bin directory and mingw32/bin directory in PATH environment variable. -In qmageview/src directory open Command Line. +In src directory open Command Line. Run command... `qmake` `make -j4` -You can download the precompiled windows exe package in the [release page](https://github.com/ksharindam/qmageview/releases). +You can download the precompiled windows exe package in the [release page](https://github.com/ksharindam/photoquick/releases). ### Usage To run this program... -`qmageview` +`photoquick` To open image.jpg with it... -`qmageview image.jpg` +`photoquick image.jpg` diff --git a/src/canvas.cpp b/src/canvas.cpp index 23a3c5b..8cf7aab 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -1,5 +1,5 @@ /* -This file is a part of qmageview program, which is GPLv3 licensed +This file is a part of photoquick program, which is GPLv3 licensed */ #include "canvas.h" #include diff --git a/src/canvas.h b/src/canvas.h index 5c5c397..88c6b30 100644 --- a/src/canvas.h +++ b/src/canvas.h @@ -1,7 +1,5 @@ #pragma once /* -This file is a part of qmageview program, which is GPLv3 licensed - Image Label Object to display the image. */ diff --git a/src/common.cpp b/src/common.cpp index 9058bf9..35a02ce 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -1,4 +1,4 @@ -/* This file is a part of qmageview program, which is GPLv3 licensed */ +/* This file is a part of photoquick program, which is GPLv3 licensed */ #include "common.h" #include "exif.h" diff --git a/src/common.h b/src/common.h index 7af74bc..f7d4b67 100644 --- a/src/common.h +++ b/src/common.h @@ -1,6 +1,4 @@ #pragma once -/* This file is a part of qmageview program, which is GPLv3 licensed */ - #include #include diff --git a/src/filters.cpp b/src/filters.cpp index 9e92f2e..7457f2f 100644 --- a/src/filters.cpp +++ b/src/filters.cpp @@ -1,4 +1,4 @@ -// this file is part of qmageview program which is GPLv3 licensed +// this file is part of photoquick program which is GPLv3 licensed #include "filters.h" #include "common.h" #include diff --git a/src/images/image.png b/src/images/image.png index 28614d0061736d16feb2aa2e51c7b1c213269521..7469c5d8946630d63ce70501b086953b0610f60d 100644 GIT binary patch delta 349 zcmV-j0iyo+0)YdN85jlt001BJ|6u?C00eVFNmK|32nc)#WQdV47=I&4L_t(IjopzU zPs2bMhM$u018SSlsUpVA1g0aon}%eHKQMuwU5Hqjd9WtpH#H$Uw*aBBoqdHxaAT;8r0ip+xd=`=P v*-l0WkV3azunW+B!C4EAF-DI5)Bmp@MKi`G=%Kgs00000NkvXXu0mjf#`B^j delta 340 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 m0EEAKZzJ5zbMa9I+{PsNu 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.width(); screen_height = desktop->availableGeometry().height(); - filename = QString("qmageview.jpg"); + filename = QString("photoquick.jpg"); QSettings settings; offset_x = settings.value("OffsetX", 4).toInt(); offset_y = settings.value("OffsetY", 26).toInt(); @@ -583,8 +583,11 @@ Window:: closeEvent(QCloseEvent *ev) int main(int argc, char *argv[]) { QApplication app(argc, argv); - app.setOrganizationName("qmageview"); - app.setApplicationName("qmageview"); + app.setOrganizationName("photoquick"); + app.setApplicationName("photoquick"); +#ifdef WIN32 + app.addLibraryPath(app.applicationDirPath()); +#endif Window *win = new Window(); win->show(); if (argc > 1) { @@ -594,7 +597,7 @@ int main(int argc, char *argv[]) win->openImage(path); } else { - QImage img = QImage(":/images/qmageview.jpg"); + QImage img = QImage(":/images/photoquick.jpg"); win->canvas->setImage(img); win->adjustWindowSize(); } diff --git a/src/main.h b/src/main.h index 20fd370..eceb879 100644 --- a/src/main.h +++ b/src/main.h @@ -1,6 +1,4 @@ #pragma once -/* This file is a part of qmageview program, which is GPLv3 licensed */ - #include "ui_mainwindow.h" #include "canvas.h" #include diff --git a/src/mainwindow.ui b/src/mainwindow.ui index daecd33..86e8ae6 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -17,7 +17,7 @@ - Image Viewer + PhotoQuick diff --git a/src/photogrid.cpp b/src/photogrid.cpp index 44f0b98..fede417 100644 --- a/src/photogrid.cpp +++ b/src/photogrid.cpp @@ -1,4 +1,4 @@ -/* This file is a part of qmageview program, which is GPLv3 licensed */ +/* This file is a part of photoquick program, which is GPLv3 licensed */ #include #include "common.h" diff --git a/src/photogrid.h b/src/photogrid.h index 6ec5cbd..b1fb522 100644 --- a/src/photogrid.h +++ b/src/photogrid.h @@ -1,5 +1,4 @@ #pragma once -/* This file is a part of qmageview program, which is GPLv3 licensed */ #include "ui_photogrid_dialog.h" #include "ui_gridsetup_dialog.h" diff --git a/src/qmageview.pro b/src/photoquick.pro similarity index 95% rename from src/qmageview.pro rename to src/photoquick.pro index e5310dd..e0e26c1 100644 --- a/src/qmageview.pro +++ b/src/photoquick.pro @@ -3,11 +3,12 @@ ###################################################################### TEMPLATE = app -TARGET = qmageview +TARGET = photoquick DEPENDPATH += . INCLUDEPATH += . QMAKE_CXXFLAGS = -fopenmp -std=c++11 LIBS += -lgomp +win32:DEFINES += WIN32 CONFIG -= debug diff --git a/src/resources.qrc b/src/resources.qrc index 33fee9d..f05fe77 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -9,7 +9,7 @@ images/addborder.png images/settings.png images/effects.png - images/qmageview.jpg + images/photoquick.jpg images/prev.png images/next.png images/play.png diff --git a/windows/EnvVarUpdate.nsh b/windows/EnvVarUpdate.nsh deleted file mode 100644 index 839d6a0..0000000 --- a/windows/EnvVarUpdate.nsh +++ /dev/null @@ -1,327 +0,0 @@ -/** - * EnvVarUpdate.nsh - * : Environmental Variables: append, prepend, and remove entries - * - * WARNING: If you use StrFunc.nsh header then include it before this file - * with all required definitions. This is to avoid conflicts - * - * Usage: - * ${EnvVarUpdate} "ResultVar" "EnvVarName" "Action" "RegLoc" "PathString" - * - * Credits: - * Version 1.0 - * * Cal Turney (turnec2) - * * Amir Szekely (KiCHiK) and e-circ for developing the forerunners of this - * function: AddToPath, un.RemoveFromPath, AddToEnvVar, un.RemoveFromEnvVar, - * WriteEnvStr, and un.DeleteEnvStr - * * Diego Pedroso (deguix) for StrTok - * * Kevin English (kenglish_hi) for StrContains - * * Hendri Adriaens (Smile2Me), Diego Pedroso (deguix), and Dan Fuhry - * (dandaman32) for StrReplace - * - * Version 1.1 (compatibility with StrFunc.nsh) - * * techtonik - * - * http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries - * - */ - - -!ifndef ENVVARUPDATE_FUNCTION -!define ENVVARUPDATE_FUNCTION -!verbose push -!verbose 3 -!include "LogicLib.nsh" -!include "WinMessages.NSH" -!include "StrFunc.nsh" - -; ---- Fix for conflict if StrFunc.nsh is already includes in main file ----------------------- -!macro _IncludeStrFunction StrFuncName - !ifndef ${StrFuncName}_INCLUDED - ${${StrFuncName}} - !endif - !ifndef Un${StrFuncName}_INCLUDED - ${Un${StrFuncName}} - !endif - !define un.${StrFuncName} "${Un${StrFuncName}}" -!macroend - -!insertmacro _IncludeStrFunction StrTok -!insertmacro _IncludeStrFunction StrStr -!insertmacro _IncludeStrFunction StrRep - -; ---------------------------------- Macro Definitions ---------------------------------------- -!macro _EnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString - Push "${EnvVarName}" - Push "${Action}" - Push "${RegLoc}" - Push "${PathString}" - Call EnvVarUpdate - Pop "${ResultVar}" -!macroend -!define EnvVarUpdate '!insertmacro "_EnvVarUpdateConstructor"' - -!macro _unEnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString - Push "${EnvVarName}" - Push "${Action}" - Push "${RegLoc}" - Push "${PathString}" - Call un.EnvVarUpdate - Pop "${ResultVar}" -!macroend -!define un.EnvVarUpdate '!insertmacro "_unEnvVarUpdateConstructor"' -; ---------------------------------- Macro Definitions end------------------------------------- - -;----------------------------------- EnvVarUpdate start---------------------------------------- -!define hklm_all_users 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' -!define hkcu_current_user 'HKCU "Environment"' - -!macro EnvVarUpdate UN - -Function ${UN}EnvVarUpdate - - Push $0 - Exch 4 - Exch $1 - Exch 3 - Exch $2 - Exch 2 - Exch $3 - Exch - Exch $4 - Push $5 - Push $6 - Push $7 - Push $8 - Push $9 - Push $R0 - - /* After this point: - ------------------------- - $0 = ResultVar (returned) - $1 = EnvVarName (input) - $2 = Action (input) - $3 = RegLoc (input) - $4 = PathString (input) - $5 = Orig EnvVar (read from registry) - $6 = Len of $0 (temp) - $7 = tempstr1 (temp) - $8 = Entry counter (temp) - $9 = tempstr2 (temp) - $R0 = tempChar (temp) */ - - ; Step 1: Read contents of EnvVarName from RegLoc - ; - ; Check for empty EnvVarName - ${If} $1 == "" - SetErrors - DetailPrint "ERROR: EnvVarName is blank" - Goto EnvVarUpdate_Restore_Vars - ${EndIf} - - ; Check for valid Action - ${If} $2 != "A" - ${AndIf} $2 != "P" - ${AndIf} $2 != "R" - SetErrors - DetailPrint "ERROR: Invalid Action - must be A, P, or R" - Goto EnvVarUpdate_Restore_Vars - ${EndIf} - - ${If} $3 == HKLM - ReadRegStr $5 ${hklm_all_users} $1 ; Get EnvVarName from all users into $5 - ${ElseIf} $3 == HKCU - ReadRegStr $5 ${hkcu_current_user} $1 ; Read EnvVarName from current user into $5 - ${Else} - SetErrors - DetailPrint 'ERROR: Action is [$3] but must be "HKLM" or HKCU"' - Goto EnvVarUpdate_Restore_Vars - ${EndIf} - - ; Check for empty PathString - ${If} $4 == "" - SetErrors - DetailPrint "ERROR: PathString is blank" - Goto EnvVarUpdate_Restore_Vars - ${EndIf} - - ; Make sure we've got some work to do - ${If} $5 == "" - ${AndIf} $2 == "R" - SetErrors - DetailPrint "$1 is empty - Nothing to remove" - Goto EnvVarUpdate_Restore_Vars - ${EndIf} - - ; Step 2: Scrub EnvVar - ; - StrCpy $0 $5 ; Copy the contents to $0 - ; Remove spaces around semicolons (NOTE: spaces before the 1st entry or - ; after the last one are not removed here but instead in Step 3) - ${If} $0 != "" ; If EnvVar is not empty ... - ${Do} - ${${UN}StrStr} $7 $0 " ;" - ${If} $7 == "" - ${ExitDo} - ${EndIf} - ${${UN}StrRep} $0 $0 " ;" ";" ; Remove ';' - ${Loop} - ${Do} - ${${UN}StrStr} $7 $0 "; " - ${If} $7 == "" - ${ExitDo} - ${EndIf} - ${${UN}StrRep} $0 $0 "; " ";" ; Remove ';' - ${Loop} - ${Do} - ${${UN}StrStr} $7 $0 ";;" - ${If} $7 == "" - ${ExitDo} - ${EndIf} - ${${UN}StrRep} $0 $0 ";;" ";" - ${Loop} - - ; Remove a leading or trailing semicolon from EnvVar - StrCpy $7 $0 1 0 - ${If} $7 == ";" - StrCpy $0 $0 "" 1 ; Change ';' to '' - ${EndIf} - StrLen $6 $0 - IntOp $6 $6 - 1 - StrCpy $7 $0 1 $6 - ${If} $7 == ";" - StrCpy $0 $0 $6 ; Change ';' to '' - ${EndIf} - ; DetailPrint "Scrubbed $1: [$0]" ; Uncomment to debug - ${EndIf} - - /* Step 3. Remove all instances of the target path/string (even if "A" or "P") - $6 = bool flag (1 = found and removed PathString) - $7 = a string (e.g. path) delimited by semicolon(s) - $8 = entry counter starting at 0 - $9 = copy of $0 - $R0 = tempChar */ - - ${If} $5 != "" ; If EnvVar is not empty ... - StrCpy $9 $0 - StrCpy $0 "" - StrCpy $8 0 - StrCpy $6 0 - - ${Do} - ${${UN}StrTok} $7 $9 ";" $8 "0" ; $7 = next entry, $8 = entry counter - - ${If} $7 == "" ; If we've run out of entries, - ${ExitDo} ; were done - ${EndIf} ; - - ; Remove leading and trailing spaces from this entry (critical step for Action=Remove) - ${Do} - StrCpy $R0 $7 1 - ${If} $R0 != " " - ${ExitDo} - ${EndIf} - StrCpy $7 $7 "" 1 ; Remove leading space - ${Loop} - ${Do} - StrCpy $R0 $7 1 -1 - ${If} $R0 != " " - ${ExitDo} - ${EndIf} - StrCpy $7 $7 -1 ; Remove trailing space - ${Loop} - ${If} $7 == $4 ; If string matches, remove it by not appending it - StrCpy $6 1 ; Set 'found' flag - ${ElseIf} $7 != $4 ; If string does NOT match - ${AndIf} $0 == "" ; and the 1st string being added to $0, - StrCpy $0 $7 ; copy it to $0 without a prepended semicolon - ${ElseIf} $7 != $4 ; If string does NOT match - ${AndIf} $0 != "" ; and this is NOT the 1st string to be added to $0, - StrCpy $0 $0;$7 ; append path to $0 with a prepended semicolon - ${EndIf} ; - - IntOp $8 $8 + 1 ; Bump counter - ${Loop} ; Check for duplicates until we run out of paths - ${EndIf} - - ; Step 4: Perform the requested Action - ; - ${If} $2 != "R" ; If Append or Prepend - ${If} $6 == 1 ; And if we found the target - DetailPrint "Target is already present in $1. It will be removed and" - ${EndIf} - ${If} $0 == "" ; If EnvVar is (now) empty - StrCpy $0 $4 ; just copy PathString to EnvVar - ${If} $6 == 0 ; If found flag is either 0 - ${OrIf} $6 == "" ; or blank (if EnvVarName is empty) - DetailPrint "$1 was empty and has been updated with the target" - ${EndIf} - ${ElseIf} $2 == "A" ; If Append (and EnvVar is not empty), - StrCpy $0 $0;$4 ; append PathString - ${If} $6 == 1 - DetailPrint "appended to $1" - ${Else} - DetailPrint "Target was appended to $1" - ${EndIf} - ${Else} ; If Prepend (and EnvVar is not empty), - StrCpy $0 $4;$0 ; prepend PathString - ${If} $6 == 1 - DetailPrint "prepended to $1" - ${Else} - DetailPrint "Target was prepended to $1" - ${EndIf} - ${EndIf} - ${Else} ; If Action = Remove - ${If} $6 == 1 ; and we found the target - DetailPrint "Target was found and removed from $1" - ${Else} - DetailPrint "Target was NOT found in $1 (nothing to remove)" - ${EndIf} - ${If} $0 == "" - DetailPrint "$1 is now empty" - ${EndIf} - ${EndIf} - - ; Step 5: Update the registry at RegLoc with the updated EnvVar and announce the change - ; - ClearErrors - ${If} $3 == HKLM - WriteRegExpandStr ${hklm_all_users} $1 $0 ; Write it in all users section - ${ElseIf} $3 == HKCU - WriteRegExpandStr ${hkcu_current_user} $1 $0 ; Write it to current user section - ${EndIf} - - IfErrors 0 +4 - MessageBox MB_OK|MB_ICONEXCLAMATION "Could not write updated $1 to $3" - DetailPrint "Could not write updated $1 to $3" - Goto EnvVarUpdate_Restore_Vars - - ; "Export" our change - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - EnvVarUpdate_Restore_Vars: - ; - ; Restore the user's variables and return ResultVar - Pop $R0 - Pop $9 - Pop $8 - Pop $7 - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Push $0 ; Push my $0 (ResultVar) - Exch - Pop $0 ; Restore his $0 - -FunctionEnd - -!macroend ; EnvVarUpdate UN -!insertmacro EnvVarUpdate "" -!insertmacro EnvVarUpdate "un." -;----------------------------------- EnvVarUpdate end---------------------------------------- - -!verbose pop -!endif diff --git a/windows/Installer Script.nsi b/windows/Installer Script.nsi index 9ffa3e5..e7e55d8 100644 --- a/windows/Installer Script.nsi +++ b/windows/Installer Script.nsi @@ -1,15 +1,21 @@ -; Script generated by the HM NIS Edit Script Wizard. - ; HM NIS Edit Wizard helper defines -!define PRODUCT_NAME "QmageView" -!define PRODUCT_VERSION "4.0.1" +!define PRODUCT_NAME "PhotoQuick" +!define PRODUCT_VERSION "4.0.5" !define PRODUCT_PUBLISHER "Arindamsoft Co." -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\qmageview.exe" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\photoquick.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "${PRODUCT_NAME}${PRODUCT_VERSION}.exe" +InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show +SetCompressor lzma + ; Required Plugins -!include "EnvVarUpdate.nsh" +;!include "EnvVarUpdate.nsh" !include "FileAssociation.nsh" ; MUI 1.67 compatible ------ @@ -17,33 +23,24 @@ ; MUI Settings !define MUI_ABORTWARNING -!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" +!define MUI_ICON "..\src\images\photoquick.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" -; Welcome page +; MUI pages !insertmacro MUI_PAGE_WELCOME -; License page !insertmacro MUI_PAGE_LICENSE "..\LICENSE.txt" -; Instfiles page +!insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES -; Finish page -!define MUI_FINISHPAGE_RUN "$INSTDIR\qmageview.exe" +!define MUI_FINISHPAGE_RUN "$INSTDIR\photoquick.exe" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES - ; Language files !insertmacro MUI_LANGUAGE "English" - ; MUI end ------ -Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "QmageView.exe" -InstallDir "$PROGRAMFILES\QmageView" -InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" -ShowInstDetails show -ShowUnInstDetails show + !define BUILDDIR "..\src\release" @@ -63,26 +60,29 @@ Section "MainSection" SEC01 File "${BUILDDIR}\imageformats\qgif4.dll" File "${BUILDDIR}\imageformats\qtiff4.dll" SetOutPath "$INSTDIR" - File "${BUILDDIR}\qmageview.exe" - CreateShortCut "$SMPROGRAMS\QmageView.lnk" "$INSTDIR\qmageview.exe" - CreateShortCut "$DESKTOP\QmageView.lnk" "$INSTDIR\qmageview.exe" + File "${BUILDDIR}\photoquick.exe" + ; Install icon and shortcut + File "..\src\images\photoquick.ico" + CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}.lnk" "$INSTDIR\photoquick.exe" "" "$INSTDIR\photoquick.ico" + CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\photoquick.exe" "" "$INSTDIR\photoquick.ico" ; Update environment variable - ${EnvVarUpdate} $0 "QT_PLUGIN_PATH" "A" "HKLM" "$INSTDIR" + ;${EnvVarUpdate} $0 "QT_PLUGIN_PATH" "A" "HKLM" "$INSTDIR" ; Associate File Types - ${registerExtension} "$INSTDIR\qmageview.exe" ".jpg" "JPEG Image" - ${registerExtension} "$INSTDIR\qmageview.exe" ".png" "PNG Image" - ${registerExtension} "$INSTDIR\qmageview.exe" ".gif" "GIF Image" - ${registerExtension} "$INSTDIR\qmageview.exe" ".svg" "SVG Image" - ${registerExtension} "$INSTDIR\qmageview.exe" ".ico" "Windows Icon" - ${registerExtension} "$INSTDIR\qmageview.exe" ".tiff" "TIFF Image" + ${registerExtension} "$INSTDIR\photoquick.exe" ".jpg" "JPEG Image" + ${registerExtension} "$INSTDIR\photoquick.exe" ".jpeg" "JPEG Image" + ${registerExtension} "$INSTDIR\photoquick.exe" ".png" "PNG Image" + ${registerExtension} "$INSTDIR\photoquick.exe" ".gif" "GIF Image" + ${registerExtension} "$INSTDIR\photoquick.exe" ".svg" "SVG Image" + ${registerExtension} "$INSTDIR\photoquick.exe" ".ico" "Windows Icon" + ${registerExtension} "$INSTDIR\photoquick.exe" ".tiff" "TIFF Image" SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\qmageview.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\photoquick.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\qmageview.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\photoquick.ico" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd @@ -100,7 +100,7 @@ FunctionEnd Section Uninstall Delete "$INSTDIR\uninst.exe" - Delete "$INSTDIR\qmageview.exe" + Delete "$INSTDIR\photoquick.exe" Delete "$INSTDIR\imageformats\qjpeg4.dll" Delete "$INSTDIR\imageformats\qsvg4.dll" Delete "$INSTDIR\imageformats\qico4.dll" @@ -113,14 +113,16 @@ Section Uninstall Delete "$INSTDIR\libgomp-1.dll" Delete "$INSTDIR\libgcc_s_dw2-1.dll" - Delete "$DESKTOP\QmageView.lnk" - Delete "$SMPROGRAMS\QmageView.lnk" + Delete "$DESKTOP\${PRODUCT_NAME}.lnk" + Delete "$SMPROGRAMS\${PRODUCT_NAME}.lnk" + Delete "$INSTDIR\photoquick.ico" RMDir "$INSTDIR\imageformats" RMDir "$INSTDIR" ; Remove environment variable - ${un.EnvVarUpdate} $0 "QT_PLUGIN_PATH" "R" "HKLM" "$INSTDIR" + ;${un.EnvVarUpdate} $0 "QT_PLUGIN_PATH" "R" "HKLM" "$INSTDIR" ${unregisterExtension} ".jpg" "JPEG Image" + ${unregisterExtension} ".jpeg" "JPEG Image" ${unregisterExtension} ".png" "PNG Image" ${unregisterExtension} ".gif" "GIF Image" ${unregisterExtension} ".svg" "SVG Image"