File indexing completed on 2024-05-12 04:02:08

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>installer_krita.nsi</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (NSIS) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifndef</span> KRITA_INSTALLER_32 <span style="color:#3f8058">&amp;</span> KRITA_INSTALLER_64
0008     <span style="color:#3f8058">!</span><span style="font-weight:bold">error</span> <span style="color:#f44f4f">"Either one of KRITA_INSTALLER_32 or KRITA_INSTALLER_64 must be defined."</span>
0009 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0010 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_32 <span style="color:#3f8058">&amp;</span> KRITA_INSTALLER_64
0011     <span style="color:#3f8058">!</span><span style="font-weight:bold">error</span> <span style="color:#f44f4f">"Only one of KRITA_INSTALLER_32 or KRITA_INSTALLER_64 should be defined."</span>
0012 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0013 
0014 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifndef</span> KRITA_PACKAGE_ROOT
0015     <span style="color:#3f8058">!</span><span style="font-weight:bold">error</span> <span style="color:#f44f4f">"KRITA_PACKAGE_ROOT should be defined and point to the root of the package files."</span>
0016 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0017 
0018 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0019     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_BITNESS 64
0020 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0021     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_BITNESS 32
0022 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0023 
0024 <span style="color:#0095ff;font-weight:bold">Unicode</span> true
0025 # Enabling DPI awareness creates awful CJK text in some sizes<span style="color:#3f8058">,</span> so don't enable it.
0026 <span style="color:#0095ff;font-weight:bold">ManifestDPIAware</span> false
0027 
0028 # Krita constants <span style="color:#3f8058">(</span>can be overridden in command line params<span style="color:#3f8058">)</span>
0029 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> /<span style="font-weight:bold">ifndef</span> KRITA_VERSION <span style="color:#f44f4f">"0.0.0.0"</span>
0030 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> /<span style="font-weight:bold">ifndef</span> KRITA_VERSION_DISPLAY <span style="color:#f44f4f">"test-version"</span>
0031 #<span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> /<span style="font-weight:bold">ifndef</span> KRITA_VERSION_GIT <span style="color:#f44f4f">""</span>
0032 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> /<span style="font-weight:bold">ifndef</span> KRITA_INSTALLER_OUTPUT_DIR <span style="color:#f44f4f">""</span>
0033 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0034     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> /<span style="font-weight:bold">ifndef</span> KRITA_INSTALLER_OUTPUT_NAME <span style="color:#f44f4f">"krita_x64_setup.exe"</span>
0035 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0036     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> /<span style="font-weight:bold">ifndef</span> KRITA_INSTALLER_OUTPUT_NAME <span style="color:#f44f4f">"krita_x86_setup.exe"</span>
0037 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0038 
0039 # Krita constants <span style="color:#3f8058">(</span>fixed<span style="color:#3f8058">)</span>
0040 <span style="color:#3f8058">!</span><span style="font-weight:bold">if</span> <span style="color:#f44f4f">"${KRITA_INSTALLER_OUTPUT_DIR}"</span> <span style="color:#3f8058">==</span> <span style="color:#f44f4f">""</span>
0041     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_OUTPUT <span style="color:#f44f4f">"${KRITA_INSTALLER_OUTPUT_NAME}"</span>
0042 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0043     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_OUTPUT <span style="color:#f44f4f">"${KRITA_INSTALLER_OUTPUT_DIR}\${KRITA_INSTALLER_OUTPUT_NAME}"</span>
0044 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0045 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRTIA_PUBLISHER <span style="color:#f44f4f">"Krita Foundation"</span>
0046 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0047     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_PRODUCTNAME <span style="color:#f44f4f">"Krita (x64)"</span>
0048     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_UNINSTALL_REGKEY <span style="color:#f44f4f">"Krita_x64"</span>
0049 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0050     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_PRODUCTNAME <span style="color:#f44f4f">"Krita (x86)"</span>
0051     <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_UNINSTALL_REGKEY <span style="color:#f44f4f">"Krita_x86"</span>
0052 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0053 
0054 <span style="color:#0095ff;font-weight:bold">VIProductVersion</span> <span style="color:#f44f4f">"${KRITA_VERSION}"</span>
0055 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"CompanyName"</span> <span style="color:#f44f4f">"${KRTIA_PUBLISHER}"</span>
0056 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"FileDescription"</span> <span style="color:#f44f4f">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY} Setup"</span>
0057 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"FileVersion"</span> <span style="color:#f44f4f">"${KRITA_VERSION}"</span>
0058 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"InternalName"</span> <span style="color:#f44f4f">"${KRITA_INSTALLER_OUTPUT_NAME}"</span>
0059 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"LegalCopyright"</span> <span style="color:#f44f4f">"${KRTIA_PUBLISHER}"</span>
0060 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"OriginalFileName"</span> <span style="color:#f44f4f">"${KRITA_INSTALLER_OUTPUT_NAME}"</span>
0061 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"ProductName"</span> <span style="color:#f44f4f">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY} Setup"</span>
0062 <span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#f44f4f">"ProductVersion"</span> <span style="color:#f44f4f">"${KRITA_VERSION}"</span>
0063 
0064 <span style="color:#0095ff;font-weight:bold">BrandingText</span> <span style="color:#f44f4f">"[NSIS ${NSIS_VERSION}]  ${KRITA_PRODUCTNAME} ${KRITA_VERSION}"</span>
0065 
0066 <span style="color:#0095ff;font-weight:bold">Name</span> <span style="color:#f44f4f">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY}"</span>
0067 <span style="color:#0095ff;font-weight:bold">OutFile</span> $<span style="color:#3f8058">{</span>KRITA_INSTALLER_OUTPUT<span style="color:#3f8058">}</span>
0068 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0069     <span style="color:#0095ff;font-weight:bold">InstallDir</span> <span style="color:#f44f4f">"$PROGRAMFILES64\Krita (x64)"</span>
0070 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0071     <span style="color:#0095ff;font-weight:bold">InstallDir</span> <span style="color:#f44f4f">"$PROGRAMFILES32\Krita (x86)"</span>
0072 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0073 XPstyle on
0074 
0075 <span style="color:#0095ff;font-weight:bold">ShowInstDetails</span> show
0076 <span style="color:#0095ff;font-weight:bold">ShowUninstDetails</span> show
0077 
0078 <span style="color:#0095ff;font-weight:bold">Var</span> KritaStartMenuFolder
0079 <span style="color:#0095ff;font-weight:bold">Var</span> CreateDesktopIcon
0080 
0081 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> MUI2.nsh
0082 
0083 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_FINISHPAGE_NOAUTOCLOSE</span>
0084 
0085 # Installer Pages
0086 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_WELCOME</span>
0087 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_LICENSEPAGE_CHECKBOX</span>
0088 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_LICENSE</span> <span style="color:#f44f4f">"license_gpl-3.0.rtf"</span>
0089 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_DIRECTORY</span>
0090 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_COMPONENTS</span>
0091 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_CUSTOMFUNCTION_PRE</span>  func_ShellExLicensePage_Init
0092 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_HEADER_TEXT</span> <span style="color:#f44f4f">"$(ShellExLicensePageHeader)"</span>
0093 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_LICENSE</span> <span style="color:#f44f4f">"license.rtf"</span>
0094 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENUPAGE_DEFAULTFOLDER</span> <span style="color:#f44f4f">"Krita"</span>
0095 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENUPAGE_REGISTRY_ROOT</span> HKLM
0096 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENUPAGE_REGISTRY_KEY</span> <span style="color:#f44f4f">"Software\Krita"</span>
0097 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENUPAGE_REGISTRY_VALUENAME</span> <span style="color:#f44f4f">"StartMenuFolder"</span>
0098 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENUPAGE_NODISABLE</span>
0099 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_STARTMENU</span> Krita $KritaStartMenuFolder
0100 <span style="color:#0095ff;font-weight:bold">Page</span> Custom func_BeforeInstallPage_Init
0101 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_INSTFILES</span>
0102 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_FINISH</span>
0103 
0104 # Uninstaller Pages
0105 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_CUSTOMFUNCTION_PRE</span> un.func_UnintallFirstpage_Init
0106 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_UNPAGE_CONFIRM</span>
0107 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_UNPAGE_INSTFILES</span>
0108 
0109 # Languages
0110 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_LANGUAGE</span> <span style="color:#f44f4f">"English"</span>
0111 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_LANGUAGE</span> <span style="color:#f44f4f">"TradChinese"</span>
0112 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_LANGUAGE</span> <span style="color:#f44f4f">"SimpChinese"</span>
0113 
0114 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> Sections.nsh
0115 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> LogicLib.nsh
0116 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> x64.nsh
0117 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> WinVer.nsh
0118 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> WordFunc.nsh
0119 
0120 <span style="color:#3f8058">!</span><span style="font-weight:bold">define</span> KRITA_SHELLEX_DIR <span style="color:#f44f4f">"$INSTDIR\shellex"</span>
0121 
0122 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"include\FileExists2.nsh"</span>
0123 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"include\IsFileInUse.nsh"</span>
0124 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"krita_versions_detect.nsh"</span>
0125 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"krita_shell_integration.nsh"</span>
0126 
0127 <span style="color:#0095ff;font-weight:bold">Var</span> KritaMsiProductX86
0128 <span style="color:#0095ff;font-weight:bold">Var</span> KritaMsiProductX64
0129 <span style="color:#0095ff;font-weight:bold">Var</span> KritaNsisVersion
0130 <span style="color:#0095ff;font-weight:bold">Var</span> KritaNsisBitness
0131 <span style="color:#0095ff;font-weight:bold">Var</span> KritaNsisInstallLocation
0132 
0133 <span style="color:#0095ff;font-weight:bold">Var</span> PrevShellExInstallLocation
0134 <span style="color:#0095ff;font-weight:bold">Var</span> PrevShellExStandalone
0135 
0136 <span style="color:#0095ff;font-weight:bold">Var</span> UninstallShellExStandalone
0137 
0138 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"-Remove_shellex"</span> SEC_remove_shellex
0139     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $PrevShellExInstallLocation <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0140     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">AndIf</span><span style="color:#3f8058">}</span> $PrevShellExStandalone <span style="color:#3f8058">==</span> 1
0141     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">AndIf</span><span style="color:#3f8058">}</span> $KritaNsisVersion <span style="color:#3f8058">==</span> <span style="color:#f44f4f">""</span>
0142     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">AndIf</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>FileExists<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$PrevShellExInstallLocation\uninstall.exe"</span>
0143         push $R0
0144         <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemovingShellEx)"</span>
0145         <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> listonly
0146         <span style="color:#0095ff;font-weight:bold">ExecWait</span> <span style="color:#f44f4f">"$PrevShellExInstallLocation\uninstall.exe /S _?=$PrevShellExInstallLocation"</span> $R0
0147         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">!=</span> 0
0148             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0149                 <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(RemoveShellExFailed)"</span>
0150             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0151             <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> both
0152             <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemoveShellExFailed)"</span>
0153             <span style="color:#0095ff;font-weight:bold">Abort</span>
0154         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0155         <span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#f44f4f">"$PrevShellExInstallLocation\uninstall.exe"</span>
0156         <span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK <span style="color:#f44f4f">"$PrevShellExInstallLocation"</span>
0157         <span style="color:#0095ff;font-weight:bold">SetRebootFlag</span> false
0158         <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
0159         <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemoveShellExDone)"</span>
0160         pop $R0
0161     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0162 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0163 
0164 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"$(SectionRemoveOldVer)"</span> SEC_remove_old_version
0165     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaNsisInstallLocation <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0166     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">AndIf</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>FileExists<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$KritaNsisInstallLocation\uninstall.exe"</span>
0167         push $R0
0168         <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemovingOldVer)"</span>
0169         <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> listonly
0170         <span style="color:#0095ff;font-weight:bold">ExecWait</span> <span style="color:#f44f4f">"$KritaNsisInstallLocation\uninstall.exe /S _?=$KritaNsisInstallLocation"</span> $R0
0171         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">!=</span> 0
0172             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0173                 <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(RemoveOldVerFailed)"</span>
0174             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0175             <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> both
0176             <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemoveOldVerFailed)"</span>
0177             <span style="color:#0095ff;font-weight:bold">Abort</span>
0178         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0179         <span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#f44f4f">"$KritaNsisInstallLocation\uninstall.exe"</span>
0180         <span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK <span style="color:#f44f4f">"$KritaNsisInstallLocation"</span>
0181         <span style="color:#0095ff;font-weight:bold">SetRebootFlag</span> false
0182         <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
0183         <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemoveOldVerDone)"</span>
0184         pop $R0
0185     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0186 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0187 
0188 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"-Thing"</span>
0189     <span style="color:#0095ff;font-weight:bold">SetOutPath</span> $INSTDIR
0190     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0191                      <span style="color:#f44f4f">"DisplayName"</span> <span style="color:#f44f4f">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY}"</span>
0192     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0193                      <span style="color:#f44f4f">"UninstallString"</span> <span style="color:#f44f4f">"$\"</span>$INSTDIR\uninstall.exe$\<span style="color:#f44f4f">""</span>
0194     <span style="color:#0095ff;font-weight:bold">WriteUninstaller</span> $INSTDIR\uninstall.exe
0195     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0196                      <span style="color:#f44f4f">"DisplayVersion"</span> <span style="color:#f44f4f">"${KRITA_VERSION}"</span>
0197     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0198                      <span style="color:#f44f4f">"DisplayIcon"</span> <span style="color:#f44f4f">"$\"</span>$INSTDIR\shellex\krita.ico$\<span style="color:#f44f4f">",0"</span>
0199     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0200                      <span style="color:#f44f4f">"URLInfoAbout"</span> <span style="color:#f44f4f">"https://krita.org/"</span>
0201     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0202                      <span style="color:#f44f4f">"InstallLocation"</span> <span style="color:#f44f4f">"$INSTDIR"</span>
0203     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0204                      <span style="color:#f44f4f">"Publisher"</span> <span style="color:#f44f4f">"${KRTIA_PUBLISHER}"</span>
0205     #WriteRegDWORD HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0206     #                   <span style="color:#f44f4f">"EstimatedSize"</span> 250000
0207     <span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0208                        <span style="color:#f44f4f">"NoModify"</span> 1
0209     <span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
0210                        <span style="color:#f44f4f">"NoRepair"</span> 1
0211     # Registry entries for version recognition
0212     #   InstallLocation:
0213     #     Where krita is installed
0214     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Krita"</span> \
0215                      <span style="color:#f44f4f">"InstallLocation"</span> <span style="color:#f44f4f">"$INSTDIR"</span>
0216     #   Version:
0217     #     Version of Krita
0218     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Krita"</span> \
0219                      <span style="color:#f44f4f">"Version"</span> <span style="color:#f44f4f">"${KRITA_VERSION}"</span>
0220     #   x64:
0221     #     Set to 1 for 64<span style="color:#3f8058">-</span>bit Krita<span style="color:#3f8058">,</span> can be missing for 32<span style="color:#3f8058">-</span>bit Krita
0222 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0223     <span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#f44f4f">"Software\Krita"</span> \
0224                        <span style="color:#f44f4f">"x64"</span> 1
0225 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0226     <span style="color:#0095ff;font-weight:bold">DeleteRegValue</span> HKLM <span style="color:#f44f4f">"Software\Krita"</span> <span style="color:#f44f4f">"x64"</span>
0227 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0228     #   InstallerLanguage:
0229     #     Language used by the installer <span style="color:#3f8058">(</span>to be re<span style="color:#3f8058">-</span>used for the uninstaller<span style="color:#3f8058">)</span>
0230     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Krita"</span> \
0231                      <span style="color:#f44f4f">"InstallerLanguage"</span> <span style="color:#f44f4f">"$LANGUAGE"</span>
0232     #   StartMenuFolder:
0233     #     Start Menu Folder
0234     #     Handled by Modern UI 2.0 <span style="color:#9500ff;font-weight:bold">MUI_PAGE_STARTMENU</span>
0235 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0236 
0237 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"${KRITA_PRODUCTNAME}"</span> SEC_product_main
0238     # TODO: Maybe switch to explicit file list<span style="color:#3f8058">?</span>
0239     <span style="color:#0095ff;font-weight:bold">File</span> /r /x ffmpeg.exe /x ffmpeg_README.txt /x ffmpeg_LICENSE.txt $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\bin
0240     <span style="color:#0095ff;font-weight:bold">File</span> /r $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\lib
0241     <span style="color:#0095ff;font-weight:bold">File</span> /r $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\share
0242     <span style="color:#0095ff;font-weight:bold">File</span> /r $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\python
0243 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0244 
0245 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"-Main_associate"</span>
0246     <span style="color:#0095ff;font-weight:bold">CreateDirectory</span> $<span style="color:#3f8058">{</span>KRITA_SHELLEX_DIR<span style="color:#3f8058">}</span>
0247     $<span style="color:#3f8058">{</span>Krita_RegisterFileAssociation<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$INSTDIR\bin\krita.exe"</span>
0248 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0249 
0250 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"-Main_Shortcuts"</span>
0251     # Placing this after Krita_RegisterFileAssociation to get the icon
0252     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENU_WRITE_BEGIN</span> Krita
0253         <span style="color:#0095ff;font-weight:bold">CreateDirectory</span> <span style="color:#f44f4f">"$SMPROGRAMS\$KritaStartMenuFolder"</span>
0254         <span style="color:#0095ff;font-weight:bold">CreateShortcut</span> <span style="color:#f44f4f">"$SMPROGRAMS\$KritaStartMenuFolder\${KRITA_PRODUCTNAME}.lnk"</span> <span style="color:#f44f4f">"$INSTDIR\bin\krita.exe"</span> <span style="color:#f44f4f">""</span> <span style="color:#f44f4f">"$INSTDIR\shellex\krita.ico"</span> 0
0255     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENU_WRITE_END</span>
0256     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $CreateDesktopIcon <span style="color:#3f8058">==</span> 1
0257         # <span style="color:#9500ff;font-weight:bold">For</span> the desktop icon<span style="color:#3f8058">,</span> keep the name short and omit version info
0258         <span style="color:#0095ff;font-weight:bold">CreateShortcut</span> <span style="color:#f44f4f">"$DESKTOP\Krita.lnk"</span> <span style="color:#f44f4f">"$INSTDIR\bin\krita.exe"</span> <span style="color:#f44f4f">""</span> <span style="color:#f44f4f">"$INSTDIR\shellex\krita.ico"</span> 0
0259     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0260 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0261 
0262 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"$(SectionShellEx)"</span> SEC_shellex
0263     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0264         $<span style="color:#3f8058">{</span>Krita_RegisterComComonents<span style="color:#3f8058">}</span> 64
0265     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0266     $<span style="color:#3f8058">{</span>Krita_RegisterComComonents<span style="color:#3f8058">}</span> 32
0267 
0268     $<span style="color:#3f8058">{</span>Krita_RegisterShellExtension<span style="color:#3f8058">}</span>
0269 
0270     #   ShellExtension\InstallLocation:
0271     #     Where the shell extension is installed
0272     #     <span style="color:#9500ff;font-weight:bold">If</span> installed by Krita installer<span style="color:#3f8058">,</span> this must point to shellex sub<span style="color:#3f8058">-</span>dir
0273     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> \
0274                      <span style="color:#f44f4f">"InstallLocation"</span> <span style="color:#f44f4f">"$INSTDIR\shellex"</span>
0275     #   ShellExtension\Version:
0276     #     Version of the shell extension
0277     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> \
0278                      <span style="color:#f44f4f">"Version"</span> <span style="color:#f44f4f">"${KRITASHELLEX_VERSION}"</span>
0279     #   ShellExtension\Standalone:
0280     #     0 <span style="color:#3f8058">=</span> Installed by Krita installer
0281     #     1 <span style="color:#3f8058">=</span> Standalone installer
0282     <span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> \
0283                        <span style="color:#f44f4f">"Standalone"</span> 0
0284     #   ShellExtension\KritaExePath:
0285     #     Path to krita.exe as specified by user or by Krita installer
0286     #     Empty <span style="font-weight:bold">if</span> not specified
0287     <span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> \
0288                      <span style="color:#f44f4f">"KritaExePath"</span> <span style="color:#f44f4f">"$INSTDIR\bin\krita.exe"</span>
0289 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0290 
0291 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> HAS_FFMPEG
0292 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"$(SectionBundledFfmpeg)"</span> SEC_ffmpeg
0293     <span style="color:#0095ff;font-weight:bold">File</span> /oname<span style="color:#3f8058">=</span>bin\ffmpeg.exe $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\bin\ffmpeg.exe
0294     <span style="color:#0095ff;font-weight:bold">File</span> /oname<span style="color:#3f8058">=</span>bin\ffmpeg_LICENSE.txt $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\bin\ffmpeg_LICENSE.txt
0295     <span style="color:#0095ff;font-weight:bold">File</span> /oname<span style="color:#3f8058">=</span>bin\ffmpeg_README.txt $<span style="color:#3f8058">{</span>KRITA_PACKAGE_ROOT<span style="color:#3f8058">}</span>\bin\ffmpeg_README.txt
0296 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0297 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0298 
0299 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"-Main_refreshShell"</span>
0300     $<span style="color:#3f8058">{</span>RefreshShell<span style="color:#3f8058">}</span>
0301 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0302 
0303 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_FUNCTION_DESCRIPTION_BEGIN</span>
0304     #<span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_DESCRIPTION_TEXT</span> $<span style="color:#3f8058">{</span>SEC_remove_shellex<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"Remove previously installed Krita Shell Integration."</span>
0305     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_DESCRIPTION_TEXT</span> $<span style="color:#3f8058">{</span>SEC_remove_old_version<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$(SectionRemoveOldVerDesc)"</span>
0306     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_DESCRIPTION_TEXT</span> $<span style="color:#3f8058">{</span>SEC_product_main<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$(SectionMainDesc)"</span>
0307     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_DESCRIPTION_TEXT</span> $<span style="color:#3f8058">{</span>SEC_shellex<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$(SectionShellExDesc)"</span>
0308 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> HAS_FFMPEG
0309     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_DESCRIPTION_TEXT</span> $<span style="color:#3f8058">{</span>SEC_ffmpeg<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$(SectionBundledFfmpegDesc)"</span>
0310 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0311 <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_FUNCTION_DESCRIPTION_END</span>
0312 
0313 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"un.$(SectionShellEx)"</span>
0314     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $UninstallShellExStandalone <span style="color:#3f8058">==</span> 1
0315         push $R0
0316         <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemovingShellEx)"</span>
0317         <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> listonly
0318         <span style="color:#0095ff;font-weight:bold">ExecWait</span> <span style="color:#f44f4f">"$INSTDIR\shellex\uninstall.exe /S _?=$INSTDIR\shellex"</span> $R0
0319         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">!=</span> 0
0320             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0321                 <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(RemoveShellExFailed)"</span>
0322             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0323             <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
0324             <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> both
0325             <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemoveShellExFailed)"</span>
0326         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0327         <span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#f44f4f">"$INSTDIR\shellex\uninstall.exe"</span>
0328         <span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK <span style="color:#f44f4f">"$INSTDIR\shellex"</span>
0329         <span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
0330         <span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#f44f4f">"$(RemoveShellExDone)"</span>
0331         pop $R0
0332     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0333         $<span style="color:#3f8058">{</span>Krita_UnregisterShellExtension<span style="color:#3f8058">}</span>
0334 
0335         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0336             $<span style="color:#3f8058">{</span>Krita_UnregisterComComonents<span style="color:#3f8058">}</span> 64
0337         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0338         $<span style="color:#3f8058">{</span>Krita_UnregisterComComonents<span style="color:#3f8058">}</span> 32
0339     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0340 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0341 
0342 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"un.Main_associate"</span>
0343     # TODO: Conditional<span style="color:#3f8058">,</span> use install log
0344     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $UninstallShellExStandalone <span style="color:#3f8058">!=</span> 1
0345         $<span style="color:#3f8058">{</span>Krita_UnregisterFileAssociation<span style="color:#3f8058">}</span>
0346     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0347 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0348 
0349 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"un.Main_Shortcuts"</span>
0350     <span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#f44f4f">"$DESKTOP\Krita.lnk"</span>
0351     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> MUI_STARTMENU_GETFOLDER Krita $KritaStartMenuFolder
0352     <span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#f44f4f">"$SMPROGRAMS\$KritaStartMenuFolder\${KRITA_PRODUCTNAME}.lnk"</span>
0353     <span style="color:#0095ff;font-weight:bold">RMDir</span> <span style="color:#f44f4f">"$SMPROGRAMS\$KritaStartMenuFolder"</span>
0354 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0355 
0356 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"un.${KRITA_PRODUCTNAME}"</span>
0357     # TODO: Maybe switch to explicit file list or some sort of install log<span style="color:#3f8058">?</span>
0358     <span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\bin
0359     <span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\lib
0360     <span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\share
0361     <span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\python
0362 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0363 
0364 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"un.Thing"</span>
0365     <span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK $INSTDIR\shellex
0366     <span style="color:#0095ff;font-weight:bold">DeleteRegKey</span> HKLM <span style="color:#f44f4f">"Software\Krita"</span>
0367     <span style="color:#0095ff;font-weight:bold">DeleteRegKey</span> HKLM <span style="color:#f44f4f">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span>
0368     <span style="color:#0095ff;font-weight:bold">Delete</span> $INSTDIR\uninstall.exe
0369     <span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK $INSTDIR
0370 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0371 
0372 <span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#f44f4f">"un.Main_refreshShell"</span>
0373     $<span style="color:#3f8058">{</span>RefreshShell<span style="color:#3f8058">}</span>
0374 <span style="color:#0095ff;font-weight:bold">SectionEnd</span>
0375 
0376 <span style="color:#0095ff;font-weight:bold">Function</span> .onInit
0377     <span style="color:#0095ff;font-weight:bold">SetShellVarContext</span> all
0378     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> SetSectionFlag $<span style="color:#3f8058">{</span>SEC_product_main<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_RO<span style="color:#3f8058">}</span>
0379     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> SetSectionFlag $<span style="color:#3f8058">{</span>SEC_product_main<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_BOLD<span style="color:#3f8058">}</span>
0380     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> SetSectionFlag $<span style="color:#3f8058">{</span>SEC_remove_old_version<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_RO<span style="color:#3f8058">}</span>
0381 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> HAS_FFMPEG
0382     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> SetSectionFlag $<span style="color:#3f8058">{</span>SEC_ffmpeg<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_RO<span style="color:#3f8058">}</span>
0383 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0384     <span style="color:#0095ff;font-weight:bold">StrCpy</span> $CreateDesktopIcon 1 # Create desktop icon by default
0385     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>AtLeastWin7<span style="color:#3f8058">}</span>
0386         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0387             <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(MsgRequireWin7)"</span>
0388         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0389         <span style="color:#0095ff;font-weight:bold">Abort</span>
0390     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0391 
0392     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0393         # Language selection<span style="color:#3f8058">,</span> seems that the order is predefined.
0394         <span style="color:#0095ff;font-weight:bold">Push</span> <span style="color:#f44f4f">""</span> # This value is for languages auto count
0395         <span style="color:#0095ff;font-weight:bold">Push</span> $<span style="color:#3f8058">{</span>LANG_ENGLISH<span style="color:#3f8058">}</span>
0396         <span style="color:#0095ff;font-weight:bold">Push</span> English
0397         <span style="color:#0095ff;font-weight:bold">Push</span> $<span style="color:#3f8058">{</span>LANG_TRADCHINESE<span style="color:#3f8058">}</span>
0398         <span style="color:#0095ff;font-weight:bold">Push</span> <span style="color:#f44f4f">"繁體中文"</span>
0399         <span style="color:#0095ff;font-weight:bold">Push</span> $<span style="color:#3f8058">{</span>LANG_SIMPCHINESE<span style="color:#3f8058">}</span>
0400         <span style="color:#0095ff;font-weight:bold">Push</span> <span style="color:#f44f4f">"简体中文"</span>
0401         <span style="color:#0095ff;font-weight:bold">Push</span> A # <span style="color:#3f8058">=</span> auto count languages
0402         LangDLL::LangDialog <span style="color:#f44f4f">"$(^SetupCaption)"</span> <span style="color:#f44f4f">"$(SetupLangPrompt)"</span>
0403         <span style="color:#0095ff;font-weight:bold">Pop</span> $LANGUAGE
0404         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $LANGUAGE <span style="color:#3f8058">==</span> <span style="color:#f44f4f">"cancel"</span>
0405             <span style="color:#0095ff;font-weight:bold">Abort</span>
0406         $<span style="color:#3f8058">{</span>Endif<span style="color:#3f8058">}</span>
0407     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0408 
0409 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0410     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0411         <span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
0412     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0413         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0414             <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(Msg64bitOn32bit)"</span>
0415         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0416         <span style="color:#0095ff;font-weight:bold">Abort</span>
0417     $<span style="color:#3f8058">{</span>Endif<span style="color:#3f8058">}</span>
0418 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0419     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0420         <span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
0421         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0422             <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_YESNO</span><span style="color:#3f8058">|</span>MB_ICONEXCLAMATION <span style="color:#f44f4f">"$(Msg32bitOn64bit)"</span> \
0423                        /SD IDYES \
0424                        IDYES lbl_allow32on64
0425             <span style="color:#0095ff;font-weight:bold">Abort</span>
0426         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0427         lbl_allow32on64:
0428     $<span style="color:#3f8058">{</span>Endif<span style="color:#3f8058">}</span>
0429 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0430 
0431     # Detect ancient Krita versions
0432     $<span style="color:#3f8058">{</span>DetectKritaMsi32bit<span style="color:#3f8058">}</span> $KritaMsiProductX86
0433     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0434         $<span style="color:#3f8058">{</span>DetectKritaMsi64bit<span style="color:#3f8058">}</span> $KritaMsiProductX64
0435     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0436     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaMsiProductX86 <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0437     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">OrIf</span><span style="color:#3f8058">}</span> $KritaMsiProductX64 <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0438         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0439             <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_YESNO</span><span style="color:#3f8058">|</span><span style="color:#9500ff;font-weight:bold">MB_ICONQUESTION</span><span style="color:#3f8058">|</span>MB_DEFBUTTON1 <span style="color:#f44f4f">"$(MsgAncientVerMustBeRemoved)"</span> \
0440                         /SD IDYES \
0441                         IDYES lbl_removeAncientVer
0442             <span style="color:#0095ff;font-weight:bold">Abort</span>
0443         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0444         lbl_removeAncientVer:
0445         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaMsiProductX64 <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0446             push $R0
0447             $<span style="color:#3f8058">{</span>MsiUninstall<span style="color:#3f8058">}</span> $KritaMsiProductX64 $R0
0448             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">!=</span> 0
0449                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0450                     $<span style="color:#3f8058">{</span>IfKritaMsi3Alpha<span style="color:#3f8058">}</span> $KritaMsiProductX64
0451                         <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(MsgKrita3alpha1RemoveFailed)"</span>
0452                     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0453                         <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(MsgKrita2msi64bitRemoveFailed)"</span>
0454                     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0455                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0456                 <span style="color:#0095ff;font-weight:bold">Abort</span>
0457             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0458             pop $R0
0459             <span style="color:#0095ff;font-weight:bold">StrCpy</span> $KritaMsiProductX64 <span style="color:#f44f4f">""</span>
0460         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0461         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaMsiProductX86 <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0462             push $R0
0463             $<span style="color:#3f8058">{</span>MsiUninstall<span style="color:#3f8058">}</span> $KritaMsiProductX86 $R0
0464             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">!=</span> 0
0465                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0466                     <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(MsgKrita2msi32bitRemoveFailed)"</span>
0467                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0468                 <span style="color:#0095ff;font-weight:bold">Abort</span>
0469             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0470             pop $R0
0471             <span style="color:#0095ff;font-weight:bold">StrCpy</span> $KritaMsiProductX86 <span style="color:#f44f4f">""</span>
0472         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0473     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0474 
0475     $<span style="color:#3f8058">{</span>DetectKritaNsis<span style="color:#3f8058">}</span> $KritaNsisVersion $KritaNsisBitness $KritaNsisInstallLocation
0476     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaNsisVersion <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0477         push $R0
0478         $<span style="color:#3f8058">{</span>VersionCompare<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"${KRITA_VERSION}"</span> <span style="color:#f44f4f">"$KritaNsisVersion"</span> $R0
0479         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">==</span> 0
0480             # Same version installed... probably
0481             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaNsisBitness <span style="color:#3f8058">==</span> $<span style="color:#3f8058">{</span>KRITA_INSTALLER_BITNESS<span style="color:#3f8058">}</span>
0482                 # Very likely the same version
0483                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0484                     <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span><span style="color:#9500ff;font-weight:bold">MB_ICONINFORMATION</span> <span style="color:#f44f4f">"$(MsgKritaSameVerReinstall)"</span>
0485                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0486             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0487                 # Very likely the same version but different arch
0488                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0489 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0490                     <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span><span style="color:#9500ff;font-weight:bold">MB_ICONINFORMATION</span> <span style="color:#f44f4f">"$(MsgKrita3264bitSwap)"</span>
0491 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0492                     <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONEXCLAMATION <span style="color:#f44f4f">"$(MsgKrita3264bitSwap)"</span>
0493 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0494                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0495             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0496         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">ElseIf</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">==</span> 1
0497             # Upgrade
0498             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $KritaNsisBitness <span style="color:#3f8058">==</span> $<span style="color:#3f8058">{</span>KRITA_INSTALLER_BITNESS<span style="color:#3f8058">}</span>
0499                 # Silent about upgrade
0500             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0501                 # Upgrade but different arch
0502                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0503 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0504                     <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span><span style="color:#9500ff;font-weight:bold">MB_ICONINFORMATION</span> <span style="color:#f44f4f">"$(MsgKrita3264bitSwap)"</span>
0505 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0506                     <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONEXCLAMATION <span style="color:#f44f4f">"$(MsgKrita3264bitSwap)"</span>
0507 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0508                 $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0509             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0510         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">ElseIf</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">==</span> 2
0511             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0512                 <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"$(MsgKritaNewerAlreadyInstalled)"</span>
0513             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0514             <span style="color:#0095ff;font-weight:bold">Abort</span>
0515         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0516             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0517                 <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONSTOP <span style="color:#f44f4f">"Error: Unexpected state"</span>
0518             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0519             <span style="color:#0095ff;font-weight:bold">Abort</span>
0520         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0521         <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> SetSectionFlag $<span style="color:#3f8058">{</span>SEC_remove_old_version<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_SELECTED<span style="color:#3f8058">}</span>
0522         # Detect <span style="font-weight:bold">if</span> Krita is running...
0523         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>IsFileinUse<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$KritaNsisInstallLocation\bin\krita.exe"</span>
0524             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0525                 <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONEXCLAMATION <span style="color:#f44f4f">"$(MsgKritaRunning)"</span>
0526             $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0527             <span style="color:#0095ff;font-weight:bold">SetErrorLevel</span> 10
0528             <span style="color:#0095ff;font-weight:bold">Abort</span>
0529         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0530         pop $R0
0531     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0532         <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> ClearSectionFlag $<span style="color:#3f8058">{</span>SEC_remove_old_version<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_SELECTED<span style="color:#3f8058">}</span>
0533         <span style="color:#0095ff;font-weight:bold">SectionSetText</span> $<span style="color:#3f8058">{</span>SEC_remove_old_version<span style="color:#3f8058">}</span> <span style="color:#f44f4f">""</span>
0534     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0535 
0536     # Detect standalone shell extension
0537     # TODO: Would it be possible to update Krita without replacing the standalone shellex<span style="color:#3f8058">?</span>
0538     <span style="color:#0095ff;font-weight:bold">ClearErrors</span>
0539     <span style="color:#0095ff;font-weight:bold">ReadRegStr</span> $PrevShellExInstallLocation HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> <span style="color:#f44f4f">"InstallLocation"</span>
0540     #ReadRegStr $PrevShellExVersion HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> <span style="color:#f44f4f">"Version"</span>
0541     <span style="color:#0095ff;font-weight:bold">ReadRegDWORD</span> $PrevShellExStandalone HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> <span style="color:#f44f4f">"Standalone"</span>
0542     #ReadRegStr $PrevShellExKritaExePath HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> <span style="color:#f44f4f">"KritaExePath"</span>
0543     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Errors<span style="color:#3f8058">}</span>
0544         # TODO: Assume no previous version installed or what<span style="color:#3f8058">?</span>
0545     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0546     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $PrevShellExStandalone <span style="color:#3f8058">==</span> 1
0547         #<span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> SetSectionFlag $<span style="color:#3f8058">{</span>SEC_remove_shellex<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_SELECTED<span style="color:#3f8058">}</span>
0548     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0549         #<span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> ClearSectionFlag $<span style="color:#3f8058">{</span>SEC_remove_shellex<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SF_SELECTED<span style="color:#3f8058">}</span>
0550         #SectionSetText $<span style="color:#3f8058">{</span>SEC_remove_shellex<span style="color:#3f8058">}</span> <span style="color:#f44f4f">""</span>
0551     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0552 <span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
0553 
0554 <span style="color:#0095ff;font-weight:bold">Function</span> un.onInit
0555     <span style="color:#0095ff;font-weight:bold">SetShellVarContext</span> all
0556 <span style="color:#3f8058">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
0557     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0558         <span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
0559     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0560         <span style="color:#0095ff;font-weight:bold">Abort</span>
0561     $<span style="color:#3f8058">{</span>Endif<span style="color:#3f8058">}</span>
0562 <span style="color:#3f8058">!</span><span style="font-weight:bold">else</span>
0563     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>RunningX64<span style="color:#3f8058">}</span>
0564         <span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
0565     $<span style="color:#3f8058">{</span>Endif<span style="color:#3f8058">}</span>
0566 <span style="color:#3f8058">!</span><span style="font-weight:bold">endif</span>
0567 
0568     # Get and use installer language:
0569     <span style="color:#0095ff;font-weight:bold">Push</span> $0
0570     <span style="color:#0095ff;font-weight:bold">ReadRegStr</span> $0 HKLM <span style="color:#f44f4f">"Software\Krita"</span> <span style="color:#f44f4f">"InstallerLanguage"</span>
0571     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $0 <span style="color:#3f8058">!=</span> <span style="color:#f44f4f">""</span>
0572         <span style="color:#0095ff;font-weight:bold">StrCpy</span> $LANGUAGE $0
0573     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0574     <span style="color:#0095ff;font-weight:bold">Pop</span> $0
0575 
0576     <span style="color:#0095ff;font-weight:bold">ReadRegDWORD</span> $UninstallShellExStandalone HKLM <span style="color:#f44f4f">"Software\Krita\ShellExtension"</span> <span style="color:#f44f4f">"Standalone"</span>
0577     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0578         # Only check here <span style="font-weight:bold">if</span> running in silent mode. It's otherwise checked in
0579         # un.func_UnintallFirstpage_Init in order to display a prompt in the
0580         # correct language.
0581         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>IsFileinUse<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$INSTDIR\bin\krita.exe"</span>
0582             <span style="color:#0095ff;font-weight:bold">SetErrorLevel</span> 10
0583             <span style="color:#0095ff;font-weight:bold">Abort</span>
0584         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0585     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0586 <span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
0587 
0588 <span style="color:#0095ff;font-weight:bold">Function</span> un.func_UnintallFirstpage_Init
0589     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>IsFileinUse<span style="color:#3f8058">}</span> <span style="color:#f44f4f">"$INSTDIR\bin\krita.exe"</span>
0590         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>Silent<span style="color:#3f8058">}</span>
0591             <span style="color:#0095ff;font-weight:bold">MessageBox</span> <span style="color:#9500ff;font-weight:bold">MB_OK</span><span style="color:#3f8058">|</span>MB_ICONEXCLAMATION <span style="color:#f44f4f">"$(MsgUninstallKritaRunning)"</span>
0592         $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0593         <span style="color:#0095ff;font-weight:bold">SetErrorLevel</span> 10
0594         <span style="color:#0095ff;font-weight:bold">Quit</span>
0595     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0596 <span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
0597 
0598 <span style="color:#0095ff;font-weight:bold">Function</span> func_ShellExLicensePage_Init
0599     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">IfNot</span><span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SectionIsSelected<span style="color:#3f8058">}</span> $<span style="color:#3f8058">{</span>SEC_shellex<span style="color:#3f8058">}</span>
0600         # Skip ShellEx license page <span style="font-weight:bold">if</span> not selected
0601         <span style="color:#0095ff;font-weight:bold">Abort</span>
0602     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0603 <span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
0604 
0605 <span style="color:#0095ff;font-weight:bold">Var</span> hwndChkDesktopIcon
0606 
0607 <span style="color:#0095ff;font-weight:bold">Function</span> func_DesktopShortcutPage_CheckChange
0608     $<span style="color:#3f8058">{</span>NSD_GetState<span style="color:#3f8058">}</span> $hwndChkDesktopIcon $CreateDesktopIcon
0609     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $CreateDesktopIcon <span style="color:#3f8058">==</span> $<span style="color:#3f8058">{</span>BST_CHECKED<span style="color:#3f8058">}</span>
0610         <span style="color:#0095ff;font-weight:bold">StrCpy</span> $CreateDesktopIcon 1
0611     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0612         <span style="color:#0095ff;font-weight:bold">StrCpy</span> $CreateDesktopIcon 0
0613     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0614 <span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
0615 
0616 <span style="color:#0095ff;font-weight:bold">Function</span> func_BeforeInstallPage_Init
0617     push $R0
0618 
0619     nsDialogs::Create 1018
0620     pop $R0
0621     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $R0 <span style="color:#3f8058">==</span> <span style="font-weight:bold">error</span>
0622         <span style="color:#0095ff;font-weight:bold">Abort</span>
0623     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0624     <span style="color:#3f8058">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_HEADER_TEXT</span> <span style="color:#f44f4f">"$(ConfirmInstallPageHeader)"</span> <span style="color:#f44f4f">"$(ConfirmInstallPageDesc)"</span>
0625 
0626     $<span style="color:#3f8058">{</span>NSD_CreateLabel<span style="color:#3f8058">}</span> 0u 0u 300u 20u <span style="color:#f44f4f">"$(DesktopIconPageDesc2)"</span>
0627     pop $R0
0628 
0629     $<span style="color:#3f8058">{</span>NSD_CreateCheckbox<span style="color:#3f8058">}</span> 0u 20u 300u 10u <span style="color:#f44f4f">"$(DesktopIconPageCheckbox)"</span>
0630     pop $hwndChkDesktopIcon
0631     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">If</span><span style="color:#3f8058">}</span> $CreateDesktopIcon <span style="color:#3f8058">==</span> 1
0632         $<span style="color:#3f8058">{</span>NSD_Check<span style="color:#3f8058">}</span> $hwndChkDesktopIcon
0633     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#3f8058">}</span>
0634         $<span style="color:#3f8058">{</span>NSD_Uncheck<span style="color:#3f8058">}</span> $hwndChkDesktopIcon
0635     $<span style="color:#3f8058">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#3f8058">}</span>
0636     $<span style="color:#3f8058">{</span>NSD_OnClick<span style="color:#3f8058">}</span> $hwndChkDesktopIcon func_DesktopShortcutPage_CheckChange
0637 
0638     $<span style="color:#3f8058">{</span>NSD_CreateLabel<span style="color:#3f8058">}</span> 0u 40u 300u 140u <span style="color:#f44f4f">"$(ConfirmInstallPageDesc2)"</span>
0639     pop $R0
0640 
0641     # TODO: Add install option summary for review<span style="color:#3f8058">?</span>
0642 
0643     nsDialogs::Show
0644 
0645     pop $R0
0646 <span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
0647 
0648 
0649 # Strings
0650 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"translations\English.nsh"</span>
0651 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"translations\TradChinese.nsh"</span>
0652 <span style="color:#3f8058">!</span><span style="font-weight:bold">include</span> <span style="color:#f44f4f">"translations\SimpChinese.nsh"</span>
0653 </pre></body></html>