Warning, file /frameworks/syntax-highlighting/autotests/html/installer_krita.nsi.html was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 Light)"/>
0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
0007 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifndef</span> KRITA_INSTALLER_32 <span style="color:#ca60ca;">&amp;</span> KRITA_INSTALLER_64
0008     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">error</span> <span style="color:#bf0303;">&quot;Either one of KRITA_INSTALLER_32 or KRITA_INSTALLER_64 must be defined.&quot;</span>
0009 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0010 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_32 <span style="color:#ca60ca;">&amp;</span> KRITA_INSTALLER_64
0011     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">error</span> <span style="color:#bf0303;">&quot;Only one of KRITA_INSTALLER_32 or KRITA_INSTALLER_64 should be defined.&quot;</span>
0012 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0013 
0014 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifndef</span> KRITA_PACKAGE_ROOT
0015     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">error</span> <span style="color:#bf0303;">&quot;KRITA_PACKAGE_ROOT should be defined and point to the root of the package files.&quot;</span>
0016 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0017 
0018 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_64
0019     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_INSTALLER_BITNESS 64
0020 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0021     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_INSTALLER_BITNESS 32
0022 <span style="color:#ca60ca;">!</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:#ca60ca;">,</span> so don't enable it.
0026 <span style="color:#0095ff;font-weight:bold;">ManifestDPIAware</span> false
0027 
0028 # Krita constants <span style="color:#ca60ca;">(</span>can be overridden in command line params<span style="color:#ca60ca;">)</span>
0029 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> /<span style="font-weight:bold;">ifndef</span> KRITA_VERSION <span style="color:#bf0303;">&quot;0.0.0.0&quot;</span>
0030 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> /<span style="font-weight:bold;">ifndef</span> KRITA_VERSION_DISPLAY <span style="color:#bf0303;">&quot;test-version&quot;</span>
0031 #<span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> /<span style="font-weight:bold;">ifndef</span> KRITA_VERSION_GIT <span style="color:#bf0303;">&quot;&quot;</span>
0032 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> /<span style="font-weight:bold;">ifndef</span> KRITA_INSTALLER_OUTPUT_DIR <span style="color:#bf0303;">&quot;&quot;</span>
0033 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_64
0034     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> /<span style="font-weight:bold;">ifndef</span> KRITA_INSTALLER_OUTPUT_NAME <span style="color:#bf0303;">&quot;krita_x64_setup.exe&quot;</span>
0035 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0036     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> /<span style="font-weight:bold;">ifndef</span> KRITA_INSTALLER_OUTPUT_NAME <span style="color:#bf0303;">&quot;krita_x86_setup.exe&quot;</span>
0037 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0038 
0039 # Krita constants <span style="color:#ca60ca;">(</span>fixed<span style="color:#ca60ca;">)</span>
0040 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">if</span> <span style="color:#bf0303;">&quot;${KRITA_INSTALLER_OUTPUT_DIR}&quot;</span> <span style="color:#ca60ca;">==</span> <span style="color:#bf0303;">&quot;&quot;</span>
0041     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_INSTALLER_OUTPUT <span style="color:#bf0303;">&quot;${KRITA_INSTALLER_OUTPUT_NAME}&quot;</span>
0042 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0043     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_INSTALLER_OUTPUT <span style="color:#bf0303;">&quot;${KRITA_INSTALLER_OUTPUT_DIR}\${KRITA_INSTALLER_OUTPUT_NAME}&quot;</span>
0044 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0045 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRTIA_PUBLISHER <span style="color:#bf0303;">&quot;Krita Foundation&quot;</span>
0046 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_64
0047     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_PRODUCTNAME <span style="color:#bf0303;">&quot;Krita (x64)&quot;</span>
0048     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_UNINSTALL_REGKEY <span style="color:#bf0303;">&quot;Krita_x64&quot;</span>
0049 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0050     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_PRODUCTNAME <span style="color:#bf0303;">&quot;Krita (x86)&quot;</span>
0051     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_UNINSTALL_REGKEY <span style="color:#bf0303;">&quot;Krita_x86&quot;</span>
0052 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0053 
0054 <span style="color:#0095ff;font-weight:bold;">VIProductVersion</span> <span style="color:#bf0303;">&quot;${KRITA_VERSION}&quot;</span>
0055 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;CompanyName&quot;</span> <span style="color:#bf0303;">&quot;${KRTIA_PUBLISHER}&quot;</span>
0056 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;FileDescription&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY} Setup&quot;</span>
0057 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;FileVersion&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_VERSION}&quot;</span>
0058 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;InternalName&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_INSTALLER_OUTPUT_NAME}&quot;</span>
0059 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;LegalCopyright&quot;</span> <span style="color:#bf0303;">&quot;${KRTIA_PUBLISHER}&quot;</span>
0060 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;OriginalFileName&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_INSTALLER_OUTPUT_NAME}&quot;</span>
0061 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;ProductName&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY} Setup&quot;</span>
0062 <span style="color:#0095ff;font-weight:bold;">VIAddVersionKey</span> <span style="color:#bf0303;">&quot;ProductVersion&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_VERSION}&quot;</span>
0063 
0064 <span style="color:#0095ff;font-weight:bold;">BrandingText</span> <span style="color:#bf0303;">&quot;[NSIS ${NSIS_VERSION}]  ${KRITA_PRODUCTNAME} ${KRITA_VERSION}&quot;</span>
0065 
0066 <span style="color:#0095ff;font-weight:bold;">Name</span> <span style="color:#bf0303;">&quot;${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY}&quot;</span>
0067 <span style="color:#0095ff;font-weight:bold;">OutFile</span> $<span style="color:#ca60ca;">{</span>KRITA_INSTALLER_OUTPUT<span style="color:#ca60ca;">}</span>
0068 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_64
0069     <span style="color:#0095ff;font-weight:bold;">InstallDir</span> <span style="color:#bf0303;">&quot;$PROGRAMFILES64\Krita (x64)&quot;</span>
0070 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0071     <span style="color:#0095ff;font-weight:bold;">InstallDir</span> <span style="color:#bf0303;">&quot;$PROGRAMFILES32\Krita (x86)&quot;</span>
0072 <span style="color:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">include</span> MUI2.nsh
0082 
0083 <span style="color:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_WELCOME</span>
0087 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> <span style="color:#9500ff;font-weight:bold;">MUI_LICENSEPAGE_CHECKBOX</span>
0088 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_LICENSE</span> <span style="color:#bf0303;">&quot;license_gpl-3.0.rtf&quot;</span>
0089 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_DIRECTORY</span>
0090 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_COMPONENTS</span>
0091 <span style="color:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">define</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_HEADER_TEXT</span> <span style="color:#bf0303;">&quot;$(ShellExLicensePageHeader)&quot;</span>
0093 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_LICENSE</span> <span style="color:#bf0303;">&quot;license.rtf&quot;</span>
0094 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> <span style="color:#9500ff;font-weight:bold;">MUI_STARTMENUPAGE_DEFAULTFOLDER</span> <span style="color:#bf0303;">&quot;Krita&quot;</span>
0095 <span style="color:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">define</span> <span style="color:#9500ff;font-weight:bold;">MUI_STARTMENUPAGE_REGISTRY_KEY</span> <span style="color:#bf0303;">&quot;Software\Krita&quot;</span>
0097 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> <span style="color:#9500ff;font-weight:bold;">MUI_STARTMENUPAGE_REGISTRY_VALUENAME</span> <span style="color:#bf0303;">&quot;StartMenuFolder&quot;</span>
0098 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> <span style="color:#9500ff;font-weight:bold;">MUI_STARTMENUPAGE_NODISABLE</span>
0099 <span style="color:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_PAGE_INSTFILES</span>
0102 <span style="color:#ca60ca;">!</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:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_UNPAGE_CONFIRM</span>
0107 <span style="color:#ca60ca;">!</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:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_LANGUAGE</span> <span style="color:#bf0303;">&quot;English&quot;</span>
0111 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_LANGUAGE</span> <span style="color:#bf0303;">&quot;TradChinese&quot;</span>
0112 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_LANGUAGE</span> <span style="color:#bf0303;">&quot;SimpChinese&quot;</span>
0113 
0114 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> Sections.nsh
0115 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> LogicLib.nsh
0116 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> x64.nsh
0117 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> WinVer.nsh
0118 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> WordFunc.nsh
0119 
0120 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">define</span> KRITA_SHELLEX_DIR <span style="color:#bf0303;">&quot;$INSTDIR\shellex&quot;</span>
0121 
0122 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;include\FileExists2.nsh&quot;</span>
0123 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;include\IsFileInUse.nsh&quot;</span>
0124 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;krita_versions_detect.nsh&quot;</span>
0125 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;krita_shell_integration.nsh&quot;</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:#bf0303;">&quot;-Remove_shellex&quot;</span> SEC_remove_shellex
0139     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $PrevShellExInstallLocation <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0140     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">AndIf</span><span style="color:#ca60ca;">}</span> $PrevShellExStandalone <span style="color:#ca60ca;">==</span> 1
0141     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">AndIf</span><span style="color:#ca60ca;">}</span> $KritaNsisVersion <span style="color:#ca60ca;">==</span> <span style="color:#bf0303;">&quot;&quot;</span>
0142     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">AndIf</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>FileExists<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$PrevShellExInstallLocation\uninstall.exe&quot;</span>
0143         push $R0
0144         <span style="color:#0095ff;font-weight:bold;">DetailPrint</span> <span style="color:#bf0303;">&quot;$(RemovingShellEx)&quot;</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:#bf0303;">&quot;$PrevShellExInstallLocation\uninstall.exe /S _?=$PrevShellExInstallLocation&quot;</span> $R0
0147         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">!=</span> 0
0148             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0149                 <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(RemoveShellExFailed)&quot;</span>
0150             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;$(RemoveShellExFailed)&quot;</span>
0153             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0154         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0155         <span style="color:#0095ff;font-weight:bold;">Delete</span> <span style="color:#bf0303;">&quot;$PrevShellExInstallLocation\uninstall.exe&quot;</span>
0156         <span style="color:#0095ff;font-weight:bold;">RMDir</span> /REBOOTOK <span style="color:#bf0303;">&quot;$PrevShellExInstallLocation&quot;</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:#bf0303;">&quot;$(RemoveShellExDone)&quot;</span>
0160         pop $R0
0161     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;$(SectionRemoveOldVer)&quot;</span> SEC_remove_old_version
0165     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaNsisInstallLocation <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0166     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">AndIf</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>FileExists<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$KritaNsisInstallLocation\uninstall.exe&quot;</span>
0167         push $R0
0168         <span style="color:#0095ff;font-weight:bold;">DetailPrint</span> <span style="color:#bf0303;">&quot;$(RemovingOldVer)&quot;</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:#bf0303;">&quot;$KritaNsisInstallLocation\uninstall.exe /S _?=$KritaNsisInstallLocation&quot;</span> $R0
0171         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">!=</span> 0
0172             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0173                 <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(RemoveOldVerFailed)&quot;</span>
0174             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;$(RemoveOldVerFailed)&quot;</span>
0177             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0178         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0179         <span style="color:#0095ff;font-weight:bold;">Delete</span> <span style="color:#bf0303;">&quot;$KritaNsisInstallLocation\uninstall.exe&quot;</span>
0180         <span style="color:#0095ff;font-weight:bold;">RMDir</span> /REBOOTOK <span style="color:#bf0303;">&quot;$KritaNsisInstallLocation&quot;</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:#bf0303;">&quot;$(RemoveOldVerDone)&quot;</span>
0184         pop $R0
0185     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;-Thing&quot;</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:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0191                      <span style="color:#bf0303;">&quot;DisplayName&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY}&quot;</span>
0192     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0193                      <span style="color:#bf0303;">&quot;UninstallString&quot;</span> <span style="color:#bf0303;">&quot;$\&quot;</span>$INSTDIR\uninstall.exe$\<span style="color:#bf0303;">&quot;&quot;</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:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0196                      <span style="color:#bf0303;">&quot;DisplayVersion&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_VERSION}&quot;</span>
0197     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0198                      <span style="color:#bf0303;">&quot;DisplayIcon&quot;</span> <span style="color:#bf0303;">&quot;$\&quot;</span>$INSTDIR\shellex\krita.ico$\<span style="color:#bf0303;">&quot;,0&quot;</span>
0199     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0200                      <span style="color:#bf0303;">&quot;URLInfoAbout&quot;</span> <span style="color:#bf0303;">&quot;https://krita.org/&quot;</span>
0201     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0202                      <span style="color:#bf0303;">&quot;InstallLocation&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR&quot;</span>
0203     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0204                      <span style="color:#bf0303;">&quot;Publisher&quot;</span> <span style="color:#bf0303;">&quot;${KRTIA_PUBLISHER}&quot;</span>
0205     #WriteRegDWORD HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0206     #                   <span style="color:#bf0303;">&quot;EstimatedSize&quot;</span> 250000
0207     <span style="color:#0095ff;font-weight:bold;">WriteRegDWORD</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0208                        <span style="color:#bf0303;">&quot;NoModify&quot;</span> 1
0209     <span style="color:#0095ff;font-weight:bold;">WriteRegDWORD</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</span> \
0210                        <span style="color:#bf0303;">&quot;NoRepair&quot;</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:#bf0303;">&quot;Software\Krita&quot;</span> \
0215                      <span style="color:#bf0303;">&quot;InstallLocation&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR&quot;</span>
0216     #   Version:
0217     #     Version of Krita
0218     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Krita&quot;</span> \
0219                      <span style="color:#bf0303;">&quot;Version&quot;</span> <span style="color:#bf0303;">&quot;${KRITA_VERSION}&quot;</span>
0220     #   x64:
0221     #     Set to 1 for 64<span style="color:#ca60ca;">-</span>bit Krita<span style="color:#ca60ca;">,</span> can be missing for 32<span style="color:#ca60ca;">-</span>bit Krita
0222 <span style="color:#ca60ca;">!</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:#bf0303;">&quot;Software\Krita&quot;</span> \
0224                        <span style="color:#bf0303;">&quot;x64&quot;</span> 1
0225 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0226     <span style="color:#0095ff;font-weight:bold;">DeleteRegValue</span> HKLM <span style="color:#bf0303;">&quot;Software\Krita&quot;</span> <span style="color:#bf0303;">&quot;x64&quot;</span>
0227 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0228     #   InstallerLanguage:
0229     #     Language used by the installer <span style="color:#ca60ca;">(</span>to be re<span style="color:#ca60ca;">-</span>used for the uninstaller<span style="color:#ca60ca;">)</span>
0230     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Krita&quot;</span> \
0231                      <span style="color:#bf0303;">&quot;InstallerLanguage&quot;</span> <span style="color:#bf0303;">&quot;$LANGUAGE&quot;</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:#bf0303;">&quot;${KRITA_PRODUCTNAME}&quot;</span> SEC_product_main
0238     # TODO: Maybe switch to explicit file list<span style="color:#ca60ca;">?</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:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</span>\bin
0240     <span style="color:#0095ff;font-weight:bold;">File</span> /r $<span style="color:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</span>\lib
0241     <span style="color:#0095ff;font-weight:bold;">File</span> /r $<span style="color:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</span>\share
0242     <span style="color:#0095ff;font-weight:bold;">File</span> /r $<span style="color:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</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:#bf0303;">&quot;-Main_associate&quot;</span>
0246     <span style="color:#0095ff;font-weight:bold;">CreateDirectory</span> $<span style="color:#ca60ca;">{</span>KRITA_SHELLEX_DIR<span style="color:#ca60ca;">}</span>
0247     $<span style="color:#ca60ca;">{</span>Krita_RegisterFileAssociation<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$INSTDIR\bin\krita.exe&quot;</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:#bf0303;">&quot;-Main_Shortcuts&quot;</span>
0251     # Placing this after Krita_RegisterFileAssociation to get the icon
0252     <span style="color:#ca60ca;">!</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:#bf0303;">&quot;$SMPROGRAMS\$KritaStartMenuFolder&quot;</span>
0254         <span style="color:#0095ff;font-weight:bold;">CreateShortcut</span> <span style="color:#bf0303;">&quot;$SMPROGRAMS\$KritaStartMenuFolder\${KRITA_PRODUCTNAME}.lnk&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR\bin\krita.exe&quot;</span> <span style="color:#bf0303;">&quot;&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR\shellex\krita.ico&quot;</span> 0
0255     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_STARTMENU_WRITE_END</span>
0256     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $CreateDesktopIcon <span style="color:#ca60ca;">==</span> 1
0257         # <span style="color:#9500ff;font-weight:bold;">For</span> the desktop icon<span style="color:#ca60ca;">,</span> keep the name short and omit version info
0258         <span style="color:#0095ff;font-weight:bold;">CreateShortcut</span> <span style="color:#bf0303;">&quot;$DESKTOP\Krita.lnk&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR\bin\krita.exe&quot;</span> <span style="color:#bf0303;">&quot;&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR\shellex\krita.ico&quot;</span> 0
0259     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;$(SectionShellEx)&quot;</span> SEC_shellex
0263     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0264         $<span style="color:#ca60ca;">{</span>Krita_RegisterComComonents<span style="color:#ca60ca;">}</span> 64
0265     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0266     $<span style="color:#ca60ca;">{</span>Krita_RegisterComComonents<span style="color:#ca60ca;">}</span> 32
0267 
0268     $<span style="color:#ca60ca;">{</span>Krita_RegisterShellExtension<span style="color:#ca60ca;">}</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:#ca60ca;">,</span> this must point to shellex sub<span style="color:#ca60ca;">-</span>dir
0273     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> \
0274                      <span style="color:#bf0303;">&quot;InstallLocation&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR\shellex&quot;</span>
0275     #   ShellExtension\Version:
0276     #     Version of the shell extension
0277     <span style="color:#0095ff;font-weight:bold;">WriteRegStr</span> HKLM <span style="color:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> \
0278                      <span style="color:#bf0303;">&quot;Version&quot;</span> <span style="color:#bf0303;">&quot;${KRITASHELLEX_VERSION}&quot;</span>
0279     #   ShellExtension\Standalone:
0280     #     0 <span style="color:#ca60ca;">=</span> Installed by Krita installer
0281     #     1 <span style="color:#ca60ca;">=</span> Standalone installer
0282     <span style="color:#0095ff;font-weight:bold;">WriteRegDWORD</span> HKLM <span style="color:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> \
0283                        <span style="color:#bf0303;">&quot;Standalone&quot;</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:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> \
0288                      <span style="color:#bf0303;">&quot;KritaExePath&quot;</span> <span style="color:#bf0303;">&quot;$INSTDIR\bin\krita.exe&quot;</span>
0289 <span style="color:#0095ff;font-weight:bold;">SectionEnd</span>
0290 
0291 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> HAS_FFMPEG
0292 <span style="color:#0095ff;font-weight:bold;">Section</span> <span style="color:#bf0303;">&quot;$(SectionBundledFfmpeg)&quot;</span> SEC_ffmpeg
0293     <span style="color:#0095ff;font-weight:bold;">File</span> /oname<span style="color:#ca60ca;">=</span>bin\ffmpeg.exe $<span style="color:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</span>\bin\ffmpeg.exe
0294     <span style="color:#0095ff;font-weight:bold;">File</span> /oname<span style="color:#ca60ca;">=</span>bin\ffmpeg_LICENSE.txt $<span style="color:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</span>\bin\ffmpeg_LICENSE.txt
0295     <span style="color:#0095ff;font-weight:bold;">File</span> /oname<span style="color:#ca60ca;">=</span>bin\ffmpeg_README.txt $<span style="color:#ca60ca;">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca;">}</span>\bin\ffmpeg_README.txt
0296 <span style="color:#0095ff;font-weight:bold;">SectionEnd</span>
0297 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0298 
0299 <span style="color:#0095ff;font-weight:bold;">Section</span> <span style="color:#bf0303;">&quot;-Main_refreshShell&quot;</span>
0300     $<span style="color:#ca60ca;">{</span>RefreshShell<span style="color:#ca60ca;">}</span>
0301 <span style="color:#0095ff;font-weight:bold;">SectionEnd</span>
0302 
0303 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_FUNCTION_DESCRIPTION_BEGIN</span>
0304     #<span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_DESCRIPTION_TEXT</span> $<span style="color:#ca60ca;">{</span>SEC_remove_shellex<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;Remove previously installed Krita Shell Integration.&quot;</span>
0305     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_DESCRIPTION_TEXT</span> $<span style="color:#ca60ca;">{</span>SEC_remove_old_version<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$(SectionRemoveOldVerDesc)&quot;</span>
0306     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_DESCRIPTION_TEXT</span> $<span style="color:#ca60ca;">{</span>SEC_product_main<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$(SectionMainDesc)&quot;</span>
0307     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_DESCRIPTION_TEXT</span> $<span style="color:#ca60ca;">{</span>SEC_shellex<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$(SectionShellExDesc)&quot;</span>
0308 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> HAS_FFMPEG
0309     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_DESCRIPTION_TEXT</span> $<span style="color:#ca60ca;">{</span>SEC_ffmpeg<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$(SectionBundledFfmpegDesc)&quot;</span>
0310 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0311 <span style="color:#ca60ca;">!</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:#bf0303;">&quot;un.$(SectionShellEx)&quot;</span>
0314     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $UninstallShellExStandalone <span style="color:#ca60ca;">==</span> 1
0315         push $R0
0316         <span style="color:#0095ff;font-weight:bold;">DetailPrint</span> <span style="color:#bf0303;">&quot;$(RemovingShellEx)&quot;</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:#bf0303;">&quot;$INSTDIR\shellex\uninstall.exe /S _?=$INSTDIR\shellex&quot;</span> $R0
0319         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">!=</span> 0
0320             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0321                 <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(RemoveShellExFailed)&quot;</span>
0322             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;$(RemoveShellExFailed)&quot;</span>
0326         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0327         <span style="color:#0095ff;font-weight:bold;">Delete</span> <span style="color:#bf0303;">&quot;$INSTDIR\shellex\uninstall.exe&quot;</span>
0328         <span style="color:#0095ff;font-weight:bold;">RMDir</span> /REBOOTOK <span style="color:#bf0303;">&quot;$INSTDIR\shellex&quot;</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:#bf0303;">&quot;$(RemoveShellExDone)&quot;</span>
0331         pop $R0
0332     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0333         $<span style="color:#ca60ca;">{</span>Krita_UnregisterShellExtension<span style="color:#ca60ca;">}</span>
0334 
0335         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0336             $<span style="color:#ca60ca;">{</span>Krita_UnregisterComComonents<span style="color:#ca60ca;">}</span> 64
0337         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0338         $<span style="color:#ca60ca;">{</span>Krita_UnregisterComComonents<span style="color:#ca60ca;">}</span> 32
0339     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;un.Main_associate&quot;</span>
0343     # TODO: Conditional<span style="color:#ca60ca;">,</span> use install log
0344     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $UninstallShellExStandalone <span style="color:#ca60ca;">!=</span> 1
0345         $<span style="color:#ca60ca;">{</span>Krita_UnregisterFileAssociation<span style="color:#ca60ca;">}</span>
0346     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;un.Main_Shortcuts&quot;</span>
0350     <span style="color:#0095ff;font-weight:bold;">Delete</span> <span style="color:#bf0303;">&quot;$DESKTOP\Krita.lnk&quot;</span>
0351     <span style="color:#ca60ca;">!</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:#bf0303;">&quot;$SMPROGRAMS\$KritaStartMenuFolder\${KRITA_PRODUCTNAME}.lnk&quot;</span>
0353     <span style="color:#0095ff;font-weight:bold;">RMDir</span> <span style="color:#bf0303;">&quot;$SMPROGRAMS\$KritaStartMenuFolder&quot;</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:#bf0303;">&quot;un.${KRITA_PRODUCTNAME}&quot;</span>
0357     # TODO: Maybe switch to explicit file list or some sort of install log<span style="color:#ca60ca;">?</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:#bf0303;">&quot;un.Thing&quot;</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:#bf0303;">&quot;Software\Krita&quot;</span>
0367     <span style="color:#0095ff;font-weight:bold;">DeleteRegKey</span> HKLM <span style="color:#bf0303;">&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}&quot;</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:#bf0303;">&quot;un.Main_refreshShell&quot;</span>
0373     $<span style="color:#ca60ca;">{</span>RefreshShell<span style="color:#ca60ca;">}</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:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> SetSectionFlag $<span style="color:#ca60ca;">{</span>SEC_product_main<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_RO<span style="color:#ca60ca;">}</span>
0379     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> SetSectionFlag $<span style="color:#ca60ca;">{</span>SEC_product_main<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_BOLD<span style="color:#ca60ca;">}</span>
0380     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> SetSectionFlag $<span style="color:#ca60ca;">{</span>SEC_remove_old_version<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_RO<span style="color:#ca60ca;">}</span>
0381 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> HAS_FFMPEG
0382     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> SetSectionFlag $<span style="color:#ca60ca;">{</span>SEC_ffmpeg<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_RO<span style="color:#ca60ca;">}</span>
0383 <span style="color:#ca60ca;">!</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>AtLeastWin7<span style="color:#ca60ca;">}</span>
0386         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0387             <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(MsgRequireWin7)&quot;</span>
0388         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0389         <span style="color:#0095ff;font-weight:bold;">Abort</span>
0390     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0391 
0392     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0393         # Language selection<span style="color:#ca60ca;">,</span> seems that the order is predefined.
0394         <span style="color:#0095ff;font-weight:bold;">Push</span> <span style="color:#bf0303;">&quot;&quot;</span> # This value is for languages auto count
0395         <span style="color:#0095ff;font-weight:bold;">Push</span> $<span style="color:#ca60ca;">{</span>LANG_ENGLISH<span style="color:#ca60ca;">}</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:#ca60ca;">{</span>LANG_TRADCHINESE<span style="color:#ca60ca;">}</span>
0398         <span style="color:#0095ff;font-weight:bold;">Push</span> <span style="color:#bf0303;">&quot;繁體中文&quot;</span>
0399         <span style="color:#0095ff;font-weight:bold;">Push</span> $<span style="color:#ca60ca;">{</span>LANG_SIMPCHINESE<span style="color:#ca60ca;">}</span>
0400         <span style="color:#0095ff;font-weight:bold;">Push</span> <span style="color:#bf0303;">&quot;简体中文&quot;</span>
0401         <span style="color:#0095ff;font-weight:bold;">Push</span> A # <span style="color:#ca60ca;">=</span> auto count languages
0402         LangDLL::LangDialog <span style="color:#bf0303;">&quot;$(^SetupCaption)&quot;</span> <span style="color:#bf0303;">&quot;$(SetupLangPrompt)&quot;</span>
0403         <span style="color:#0095ff;font-weight:bold;">Pop</span> $LANGUAGE
0404         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $LANGUAGE <span style="color:#ca60ca;">==</span> <span style="color:#bf0303;">&quot;cancel&quot;</span>
0405             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0406         $<span style="color:#ca60ca;">{</span>Endif<span style="color:#ca60ca;">}</span>
0407     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0408 
0409 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_64
0410     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0411         <span style="color:#0095ff;font-weight:bold;">SetRegView</span> 64
0412     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0413         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0414             <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(Msg64bitOn32bit)&quot;</span>
0415         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0416         <span style="color:#0095ff;font-weight:bold;">Abort</span>
0417     $<span style="color:#ca60ca;">{</span>Endif<span style="color:#ca60ca;">}</span>
0418 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0419     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0420         <span style="color:#0095ff;font-weight:bold;">SetRegView</span> 64
0421         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0422             <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_YESNO</span><span style="color:#ca60ca;">|</span>MB_ICONEXCLAMATION <span style="color:#bf0303;">&quot;$(Msg32bitOn64bit)&quot;</span> \
0423                        /SD IDYES \
0424                        IDYES lbl_allow32on64
0425             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0426         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0427         lbl_allow32on64:
0428     $<span style="color:#ca60ca;">{</span>Endif<span style="color:#ca60ca;">}</span>
0429 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0430 
0431     # Detect ancient Krita versions
0432     $<span style="color:#ca60ca;">{</span>DetectKritaMsi32bit<span style="color:#ca60ca;">}</span> $KritaMsiProductX86
0433     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0434         $<span style="color:#ca60ca;">{</span>DetectKritaMsi64bit<span style="color:#ca60ca;">}</span> $KritaMsiProductX64
0435     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0436     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaMsiProductX86 <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0437     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">OrIf</span><span style="color:#ca60ca;">}</span> $KritaMsiProductX64 <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0438         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0439             <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_YESNO</span><span style="color:#ca60ca;">|</span><span style="color:#9500ff;font-weight:bold;">MB_ICONQUESTION</span><span style="color:#ca60ca;">|</span>MB_DEFBUTTON1 <span style="color:#bf0303;">&quot;$(MsgAncientVerMustBeRemoved)&quot;</span> \
0440                         /SD IDYES \
0441                         IDYES lbl_removeAncientVer
0442             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0443         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0444         lbl_removeAncientVer:
0445         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaMsiProductX64 <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0446             push $R0
0447             $<span style="color:#ca60ca;">{</span>MsiUninstall<span style="color:#ca60ca;">}</span> $KritaMsiProductX64 $R0
0448             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">!=</span> 0
0449                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0450                     $<span style="color:#ca60ca;">{</span>IfKritaMsi3Alpha<span style="color:#ca60ca;">}</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:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(MsgKrita3alpha1RemoveFailed)&quot;</span>
0452                     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0453                         <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(MsgKrita2msi64bitRemoveFailed)&quot;</span>
0454                     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0455                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0456                 <span style="color:#0095ff;font-weight:bold;">Abort</span>
0457             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0458             pop $R0
0459             <span style="color:#0095ff;font-weight:bold;">StrCpy</span> $KritaMsiProductX64 <span style="color:#bf0303;">&quot;&quot;</span>
0460         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0461         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaMsiProductX86 <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0462             push $R0
0463             $<span style="color:#ca60ca;">{</span>MsiUninstall<span style="color:#ca60ca;">}</span> $KritaMsiProductX86 $R0
0464             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">!=</span> 0
0465                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0466                     <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(MsgKrita2msi32bitRemoveFailed)&quot;</span>
0467                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0468                 <span style="color:#0095ff;font-weight:bold;">Abort</span>
0469             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0470             pop $R0
0471             <span style="color:#0095ff;font-weight:bold;">StrCpy</span> $KritaMsiProductX86 <span style="color:#bf0303;">&quot;&quot;</span>
0472         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0473     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0474 
0475     $<span style="color:#ca60ca;">{</span>DetectKritaNsis<span style="color:#ca60ca;">}</span> $KritaNsisVersion $KritaNsisBitness $KritaNsisInstallLocation
0476     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaNsisVersion <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0477         push $R0
0478         $<span style="color:#ca60ca;">{</span>VersionCompare<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;${KRITA_VERSION}&quot;</span> <span style="color:#bf0303;">&quot;$KritaNsisVersion&quot;</span> $R0
0479         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">==</span> 0
0480             # Same version installed... probably
0481             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaNsisBitness <span style="color:#ca60ca;">==</span> $<span style="color:#ca60ca;">{</span>KRITA_INSTALLER_BITNESS<span style="color:#ca60ca;">}</span>
0482                 # Very likely the same version
0483                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0484                     <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span><span style="color:#9500ff;font-weight:bold;">MB_ICONINFORMATION</span> <span style="color:#bf0303;">&quot;$(MsgKritaSameVerReinstall)&quot;</span>
0485                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0486             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0487                 # Very likely the same version but different arch
0488                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0489 <span style="color:#ca60ca;">!</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:#ca60ca;">|</span><span style="color:#9500ff;font-weight:bold;">MB_ICONINFORMATION</span> <span style="color:#bf0303;">&quot;$(MsgKrita3264bitSwap)&quot;</span>
0491 <span style="color:#ca60ca;">!</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:#ca60ca;">|</span>MB_ICONEXCLAMATION <span style="color:#bf0303;">&quot;$(MsgKrita3264bitSwap)&quot;</span>
0493 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0494                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0495             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0496         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">ElseIf</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">==</span> 1
0497             # Upgrade
0498             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $KritaNsisBitness <span style="color:#ca60ca;">==</span> $<span style="color:#ca60ca;">{</span>KRITA_INSTALLER_BITNESS<span style="color:#ca60ca;">}</span>
0499                 # Silent about upgrade
0500             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0501                 # Upgrade but different arch
0502                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0503 <span style="color:#ca60ca;">!</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:#ca60ca;">|</span><span style="color:#9500ff;font-weight:bold;">MB_ICONINFORMATION</span> <span style="color:#bf0303;">&quot;$(MsgKrita3264bitSwap)&quot;</span>
0505 <span style="color:#ca60ca;">!</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:#ca60ca;">|</span>MB_ICONEXCLAMATION <span style="color:#bf0303;">&quot;$(MsgKrita3264bitSwap)&quot;</span>
0507 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">endif</span>
0508                 $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0509             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0510         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">ElseIf</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">==</span> 2
0511             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0512                 <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;$(MsgKritaNewerAlreadyInstalled)&quot;</span>
0513             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0514             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0515         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0516             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0517                 <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONSTOP <span style="color:#bf0303;">&quot;Error: Unexpected state&quot;</span>
0518             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0519             <span style="color:#0095ff;font-weight:bold;">Abort</span>
0520         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0521         <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> SetSectionFlag $<span style="color:#ca60ca;">{</span>SEC_remove_old_version<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_SELECTED<span style="color:#ca60ca;">}</span>
0522         # Detect <span style="font-weight:bold;">if</span> Krita is running...
0523         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>IsFileinUse<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$KritaNsisInstallLocation\bin\krita.exe&quot;</span>
0524             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0525                 <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONEXCLAMATION <span style="color:#bf0303;">&quot;$(MsgKritaRunning)&quot;</span>
0526             $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0530         pop $R0
0531     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0532         <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> ClearSectionFlag $<span style="color:#ca60ca;">{</span>SEC_remove_old_version<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_SELECTED<span style="color:#ca60ca;">}</span>
0533         <span style="color:#0095ff;font-weight:bold;">SectionSetText</span> $<span style="color:#ca60ca;">{</span>SEC_remove_old_version<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;&quot;</span>
0534     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0535 
0536     # Detect standalone shell extension
0537     # TODO: Would it be possible to update Krita without replacing the standalone shellex<span style="color:#ca60ca;">?</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:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> <span style="color:#bf0303;">&quot;InstallLocation&quot;</span>
0540     #ReadRegStr $PrevShellExVersion HKLM <span style="color:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> <span style="color:#bf0303;">&quot;Version&quot;</span>
0541     <span style="color:#0095ff;font-weight:bold;">ReadRegDWORD</span> $PrevShellExStandalone HKLM <span style="color:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> <span style="color:#bf0303;">&quot;Standalone&quot;</span>
0542     #ReadRegStr $PrevShellExKritaExePath HKLM <span style="color:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> <span style="color:#bf0303;">&quot;KritaExePath&quot;</span>
0543     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Errors<span style="color:#ca60ca;">}</span>
0544         # TODO: Assume no previous version installed or what<span style="color:#ca60ca;">?</span>
0545     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0546     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $PrevShellExStandalone <span style="color:#ca60ca;">==</span> 1
0547         #<span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> SetSectionFlag $<span style="color:#ca60ca;">{</span>SEC_remove_shellex<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_SELECTED<span style="color:#ca60ca;">}</span>
0548     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0549         #<span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> ClearSectionFlag $<span style="color:#ca60ca;">{</span>SEC_remove_shellex<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SF_SELECTED<span style="color:#ca60ca;">}</span>
0550         #SectionSetText $<span style="color:#ca60ca;">{</span>SEC_remove_shellex<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;&quot;</span>
0551     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">!</span><span style="font-weight:bold;">ifdef</span> KRITA_INSTALLER_64
0557     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0558         <span style="color:#0095ff;font-weight:bold;">SetRegView</span> 64
0559     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0560         <span style="color:#0095ff;font-weight:bold;">Abort</span>
0561     $<span style="color:#ca60ca;">{</span>Endif<span style="color:#ca60ca;">}</span>
0562 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">else</span>
0563     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>RunningX64<span style="color:#ca60ca;">}</span>
0564         <span style="color:#0095ff;font-weight:bold;">SetRegView</span> 64
0565     $<span style="color:#ca60ca;">{</span>Endif<span style="color:#ca60ca;">}</span>
0566 <span style="color:#ca60ca;">!</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:#bf0303;">&quot;Software\Krita&quot;</span> <span style="color:#bf0303;">&quot;InstallerLanguage&quot;</span>
0571     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $0 <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">&quot;&quot;</span>
0572         <span style="color:#0095ff;font-weight:bold;">StrCpy</span> $LANGUAGE $0
0573     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#bf0303;">&quot;Software\Krita\ShellExtension&quot;</span> <span style="color:#bf0303;">&quot;Standalone&quot;</span>
0577     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>IsFileinUse<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$INSTDIR\bin\krita.exe&quot;</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0585     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>IsFileinUse<span style="color:#ca60ca;">}</span> <span style="color:#bf0303;">&quot;$INSTDIR\bin\krita.exe&quot;</span>
0590         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>Silent<span style="color:#ca60ca;">}</span>
0591             <span style="color:#0095ff;font-weight:bold;">MessageBox</span> <span style="color:#9500ff;font-weight:bold;">MB_OK</span><span style="color:#ca60ca;">|</span>MB_ICONEXCLAMATION <span style="color:#bf0303;">&quot;$(MsgUninstallKritaRunning)&quot;</span>
0592         $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">IfNot</span><span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SectionIsSelected<span style="color:#ca60ca;">}</span> $<span style="color:#ca60ca;">{</span>SEC_shellex<span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">{</span>NSD_GetState<span style="color:#ca60ca;">}</span> $hwndChkDesktopIcon $CreateDesktopIcon
0609     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $CreateDesktopIcon <span style="color:#ca60ca;">==</span> $<span style="color:#ca60ca;">{</span>BST_CHECKED<span style="color:#ca60ca;">}</span>
0610         <span style="color:#0095ff;font-weight:bold;">StrCpy</span> $CreateDesktopIcon 1
0611     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0612         <span style="color:#0095ff;font-weight:bold;">StrCpy</span> $CreateDesktopIcon 0
0613     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</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:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $R0 <span style="color:#ca60ca;">==</span> <span style="font-weight:bold;">error</span>
0622         <span style="color:#0095ff;font-weight:bold;">Abort</span>
0623     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0624     <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">insertmacro</span> <span style="color:#9500ff;font-weight:bold;">MUI_HEADER_TEXT</span> <span style="color:#bf0303;">&quot;$(ConfirmInstallPageHeader)&quot;</span> <span style="color:#bf0303;">&quot;$(ConfirmInstallPageDesc)&quot;</span>
0625 
0626     $<span style="color:#ca60ca;">{</span>NSD_CreateLabel<span style="color:#ca60ca;">}</span> 0u 0u 300u 20u <span style="color:#bf0303;">&quot;$(DesktopIconPageDesc2)&quot;</span>
0627     pop $R0
0628 
0629     $<span style="color:#ca60ca;">{</span>NSD_CreateCheckbox<span style="color:#ca60ca;">}</span> 0u 20u 300u 10u <span style="color:#bf0303;">&quot;$(DesktopIconPageCheckbox)&quot;</span>
0630     pop $hwndChkDesktopIcon
0631     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">If</span><span style="color:#ca60ca;">}</span> $CreateDesktopIcon <span style="color:#ca60ca;">==</span> 1
0632         $<span style="color:#ca60ca;">{</span>NSD_Check<span style="color:#ca60ca;">}</span> $hwndChkDesktopIcon
0633     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">Else</span><span style="color:#ca60ca;">}</span>
0634         $<span style="color:#ca60ca;">{</span>NSD_Uncheck<span style="color:#ca60ca;">}</span> $hwndChkDesktopIcon
0635     $<span style="color:#ca60ca;">{</span><span style="color:#9500ff;font-weight:bold;">EndIf</span><span style="color:#ca60ca;">}</span>
0636     $<span style="color:#ca60ca;">{</span>NSD_OnClick<span style="color:#ca60ca;">}</span> $hwndChkDesktopIcon func_DesktopShortcutPage_CheckChange
0637 
0638     $<span style="color:#ca60ca;">{</span>NSD_CreateLabel<span style="color:#ca60ca;">}</span> 0u 40u 300u 140u <span style="color:#bf0303;">&quot;$(ConfirmInstallPageDesc2)&quot;</span>
0639     pop $R0
0640 
0641     # TODO: Add install option summary for review<span style="color:#ca60ca;">?</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:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;translations\English.nsh&quot;</span>
0651 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;translations\TradChinese.nsh&quot;</span>
0652 <span style="color:#ca60ca;">!</span><span style="font-weight:bold;">include</span> <span style="color:#bf0303;">&quot;translations\SimpChinese.nsh&quot;</span>
0653 </pre></body></html>