Files
RedBear-OS/local/recipes/kde/kf6-syntaxhighlighting/source/autotests/html/installer_krita.nsi.html
T

654 lines
74 KiB
HTML

<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>installer_krita.nsi</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (NSIS) - Theme (Breeze Light)"/>
</head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifndef</span> KRITA_INSTALLER_32 <span style="color:#ca60ca">&amp;</span> KRITA_INSTALLER_64
<span style="color:#ca60ca">!</span><span style="font-weight:bold">error</span> <span style="color:#bf0303">"Either one of KRITA_INSTALLER_32 or KRITA_INSTALLER_64 must be defined."</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_32 <span style="color:#ca60ca">&amp;</span> KRITA_INSTALLER_64
<span style="color:#ca60ca">!</span><span style="font-weight:bold">error</span> <span style="color:#bf0303">"Only one of KRITA_INSTALLER_32 or KRITA_INSTALLER_64 should be defined."</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifndef</span> KRITA_PACKAGE_ROOT
<span style="color:#ca60ca">!</span><span style="font-weight:bold">error</span> <span style="color:#bf0303">"KRITA_PACKAGE_ROOT should be defined and point to the root of the package files."</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_BITNESS 64
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_BITNESS 32
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#0095ff;font-weight:bold">Unicode</span> true
# Enabling DPI awareness creates awful CJK text in some sizes<span style="color:#ca60ca">,</span> so don't enable it.
<span style="color:#0095ff;font-weight:bold">ManifestDPIAware</span> false
# Krita constants <span style="color:#ca60ca">(</span>can be overridden in command line params<span style="color:#ca60ca">)</span>
<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">"0.0.0.0"</span>
<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">"test-version"</span>
#<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">""</span>
<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">""</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<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">"krita_x64_setup.exe"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<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">"krita_x86_setup.exe"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
# Krita constants <span style="color:#ca60ca">(</span>fixed<span style="color:#ca60ca">)</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">if</span> <span style="color:#bf0303">"${KRITA_INSTALLER_OUTPUT_DIR}"</span> <span style="color:#ca60ca">==</span> <span style="color:#bf0303">""</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_OUTPUT <span style="color:#bf0303">"${KRITA_INSTALLER_OUTPUT_NAME}"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_INSTALLER_OUTPUT <span style="color:#bf0303">"${KRITA_INSTALLER_OUTPUT_DIR}\${KRITA_INSTALLER_OUTPUT_NAME}"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRTIA_PUBLISHER <span style="color:#bf0303">"Krita Foundation"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_PRODUCTNAME <span style="color:#bf0303">"Krita (x64)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_UNINSTALL_REGKEY <span style="color:#bf0303">"Krita_x64"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_PRODUCTNAME <span style="color:#bf0303">"Krita (x86)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_UNINSTALL_REGKEY <span style="color:#bf0303">"Krita_x86"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#0095ff;font-weight:bold">VIProductVersion</span> <span style="color:#bf0303">"${KRITA_VERSION}"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"CompanyName"</span> <span style="color:#bf0303">"${KRTIA_PUBLISHER}"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"FileDescription"</span> <span style="color:#bf0303">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY} Setup"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"FileVersion"</span> <span style="color:#bf0303">"${KRITA_VERSION}"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"InternalName"</span> <span style="color:#bf0303">"${KRITA_INSTALLER_OUTPUT_NAME}"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"LegalCopyright"</span> <span style="color:#bf0303">"${KRTIA_PUBLISHER}"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"OriginalFileName"</span> <span style="color:#bf0303">"${KRITA_INSTALLER_OUTPUT_NAME}"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"ProductName"</span> <span style="color:#bf0303">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY} Setup"</span>
<span style="color:#0095ff;font-weight:bold">VIAddVersionKey</span> <span style="color:#bf0303">"ProductVersion"</span> <span style="color:#bf0303">"${KRITA_VERSION}"</span>
<span style="color:#0095ff;font-weight:bold">BrandingText</span> <span style="color:#bf0303">"[NSIS ${NSIS_VERSION}] ${KRITA_PRODUCTNAME} ${KRITA_VERSION}"</span>
<span style="color:#0095ff;font-weight:bold">Name</span> <span style="color:#bf0303">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY}"</span>
<span style="color:#0095ff;font-weight:bold">OutFile</span> $<span style="color:#ca60ca">{</span>KRITA_INSTALLER_OUTPUT<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<span style="color:#0095ff;font-weight:bold">InstallDir</span> <span style="color:#bf0303">"$PROGRAMFILES64\Krita (x64)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<span style="color:#0095ff;font-weight:bold">InstallDir</span> <span style="color:#bf0303">"$PROGRAMFILES32\Krita (x86)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
XPstyle on
<span style="color:#0095ff;font-weight:bold">ShowInstDetails</span> show
<span style="color:#0095ff;font-weight:bold">ShowUninstDetails</span> show
<span style="color:#0095ff;font-weight:bold">Var</span> KritaStartMenuFolder
<span style="color:#0095ff;font-weight:bold">Var</span> CreateDesktopIcon
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> MUI2.nsh
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_FINISHPAGE_NOAUTOCLOSE</span>
# Installer Pages
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_WELCOME</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_LICENSEPAGE_CHECKBOX</span>
<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">"license_gpl-3.0.rtf"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_DIRECTORY</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_COMPONENTS</span>
<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
<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">"$(ShellExLicensePageHeader)"</span>
<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">"license.rtf"</span>
<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">"Krita"</span>
<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
<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">"Software\Krita"</span>
<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">"StartMenuFolder"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENUPAGE_NODISABLE</span>
<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
<span style="color:#0095ff;font-weight:bold">Page</span> Custom func_BeforeInstallPage_Init
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_INSTFILES</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_PAGE_FINISH</span>
# Uninstaller Pages
<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
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_UNPAGE_CONFIRM</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_UNPAGE_INSTFILES</span>
# Languages
<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">"English"</span>
<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">"TradChinese"</span>
<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">"SimpChinese"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> Sections.nsh
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> LogicLib.nsh
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> x64.nsh
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> WinVer.nsh
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> WordFunc.nsh
<span style="color:#ca60ca">!</span><span style="font-weight:bold">define</span> KRITA_SHELLEX_DIR <span style="color:#bf0303">"$INSTDIR\shellex"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"include\FileExists2.nsh"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"include\IsFileInUse.nsh"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"krita_versions_detect.nsh"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"krita_shell_integration.nsh"</span>
<span style="color:#0095ff;font-weight:bold">Var</span> KritaMsiProductX86
<span style="color:#0095ff;font-weight:bold">Var</span> KritaMsiProductX64
<span style="color:#0095ff;font-weight:bold">Var</span> KritaNsisVersion
<span style="color:#0095ff;font-weight:bold">Var</span> KritaNsisBitness
<span style="color:#0095ff;font-weight:bold">Var</span> KritaNsisInstallLocation
<span style="color:#0095ff;font-weight:bold">Var</span> PrevShellExInstallLocation
<span style="color:#0095ff;font-weight:bold">Var</span> PrevShellExStandalone
<span style="color:#0095ff;font-weight:bold">Var</span> UninstallShellExStandalone
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"-Remove_shellex"</span> SEC_remove_shellex
$<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">""</span>
$<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
$<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">""</span>
$<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">"$PrevShellExInstallLocation\uninstall.exe"</span>
push $R0
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemovingShellEx)"</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> listonly
<span style="color:#0095ff;font-weight:bold">ExecWait</span> <span style="color:#bf0303">"$PrevShellExInstallLocation\uninstall.exe /S _?=$PrevShellExInstallLocation"</span> $R0
$<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
$<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>
<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">"$(RemoveShellExFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> both
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemoveShellExFailed)"</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#bf0303">"$PrevShellExInstallLocation\uninstall.exe"</span>
<span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK <span style="color:#bf0303">"$PrevShellExInstallLocation"</span>
<span style="color:#0095ff;font-weight:bold">SetRebootFlag</span> false
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemoveShellExDone)"</span>
pop $R0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"$(SectionRemoveOldVer)"</span> SEC_remove_old_version
$<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">""</span>
$<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">"$KritaNsisInstallLocation\uninstall.exe"</span>
push $R0
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemovingOldVer)"</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> listonly
<span style="color:#0095ff;font-weight:bold">ExecWait</span> <span style="color:#bf0303">"$KritaNsisInstallLocation\uninstall.exe /S _?=$KritaNsisInstallLocation"</span> $R0
$<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
$<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>
<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">"$(RemoveOldVerFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> both
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemoveOldVerFailed)"</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#bf0303">"$KritaNsisInstallLocation\uninstall.exe"</span>
<span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK <span style="color:#bf0303">"$KritaNsisInstallLocation"</span>
<span style="color:#0095ff;font-weight:bold">SetRebootFlag</span> false
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemoveOldVerDone)"</span>
pop $R0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"-Thing"</span>
<span style="color:#0095ff;font-weight:bold">SetOutPath</span> $INSTDIR
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"DisplayName"</span> <span style="color:#bf0303">"${KRITA_PRODUCTNAME} ${KRITA_VERSION_DISPLAY}"</span>
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"UninstallString"</span> <span style="color:#bf0303">"$\"</span>$INSTDIR\uninstall.exe$\<span style="color:#bf0303">""</span>
<span style="color:#0095ff;font-weight:bold">WriteUninstaller</span> $INSTDIR\uninstall.exe
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"DisplayVersion"</span> <span style="color:#bf0303">"${KRITA_VERSION}"</span>
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"DisplayIcon"</span> <span style="color:#bf0303">"$\"</span>$INSTDIR\shellex\krita.ico$\<span style="color:#bf0303">",0"</span>
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"URLInfoAbout"</span> <span style="color:#bf0303">"https://krita.org/"</span>
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"InstallLocation"</span> <span style="color:#bf0303">"$INSTDIR"</span>
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"Publisher"</span> <span style="color:#bf0303">"${KRTIA_PUBLISHER}"</span>
#WriteRegDWORD HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
# <span style="color:#bf0303">"EstimatedSize"</span> 250000
<span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"NoModify"</span> 1
<span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span> \
<span style="color:#bf0303">"NoRepair"</span> 1
# Registry entries for version recognition
# InstallLocation:
# Where krita is installed
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Krita"</span> \
<span style="color:#bf0303">"InstallLocation"</span> <span style="color:#bf0303">"$INSTDIR"</span>
# Version:
# Version of Krita
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Krita"</span> \
<span style="color:#bf0303">"Version"</span> <span style="color:#bf0303">"${KRITA_VERSION}"</span>
# x64:
# 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
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#bf0303">"Software\Krita"</span> \
<span style="color:#bf0303">"x64"</span> 1
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<span style="color:#0095ff;font-weight:bold">DeleteRegValue</span> HKLM <span style="color:#bf0303">"Software\Krita"</span> <span style="color:#bf0303">"x64"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
# InstallerLanguage:
# 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>
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Krita"</span> \
<span style="color:#bf0303">"InstallerLanguage"</span> <span style="color:#bf0303">"$LANGUAGE"</span>
# StartMenuFolder:
# Start Menu Folder
# Handled by Modern UI 2.0 <span style="color:#9500ff;font-weight:bold">MUI_PAGE_STARTMENU</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"${KRITA_PRODUCTNAME}"</span> SEC_product_main
# TODO: Maybe switch to explicit file list<span style="color:#ca60ca">?</span>
<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
<span style="color:#0095ff;font-weight:bold">File</span> /r $<span style="color:#ca60ca">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca">}</span>\lib
<span style="color:#0095ff;font-weight:bold">File</span> /r $<span style="color:#ca60ca">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca">}</span>\share
<span style="color:#0095ff;font-weight:bold">File</span> /r $<span style="color:#ca60ca">{</span>KRITA_PACKAGE_ROOT<span style="color:#ca60ca">}</span>\python
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"-Main_associate"</span>
<span style="color:#0095ff;font-weight:bold">CreateDirectory</span> $<span style="color:#ca60ca">{</span>KRITA_SHELLEX_DIR<span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>Krita_RegisterFileAssociation<span style="color:#ca60ca">}</span> <span style="color:#bf0303">"$INSTDIR\bin\krita.exe"</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"-Main_Shortcuts"</span>
# Placing this after Krita_RegisterFileAssociation to get the icon
<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
<span style="color:#0095ff;font-weight:bold">CreateDirectory</span> <span style="color:#bf0303">"$SMPROGRAMS\$KritaStartMenuFolder"</span>
<span style="color:#0095ff;font-weight:bold">CreateShortcut</span> <span style="color:#bf0303">"$SMPROGRAMS\$KritaStartMenuFolder\${KRITA_PRODUCTNAME}.lnk"</span> <span style="color:#bf0303">"$INSTDIR\bin\krita.exe"</span> <span style="color:#bf0303">""</span> <span style="color:#bf0303">"$INSTDIR\shellex\krita.ico"</span> 0
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_STARTMENU_WRITE_END</span>
$<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
# <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
<span style="color:#0095ff;font-weight:bold">CreateShortcut</span> <span style="color:#bf0303">"$DESKTOP\Krita.lnk"</span> <span style="color:#bf0303">"$INSTDIR\bin\krita.exe"</span> <span style="color:#bf0303">""</span> <span style="color:#bf0303">"$INSTDIR\shellex\krita.ico"</span> 0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"$(SectionShellEx)"</span> SEC_shellex
$<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>
$<span style="color:#ca60ca">{</span>Krita_RegisterComComonents<span style="color:#ca60ca">}</span> 64
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>Krita_RegisterComComonents<span style="color:#ca60ca">}</span> 32
$<span style="color:#ca60ca">{</span>Krita_RegisterShellExtension<span style="color:#ca60ca">}</span>
# ShellExtension\InstallLocation:
# Where the shell extension is installed
# <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
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> \
<span style="color:#bf0303">"InstallLocation"</span> <span style="color:#bf0303">"$INSTDIR\shellex"</span>
# ShellExtension\Version:
# Version of the shell extension
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> \
<span style="color:#bf0303">"Version"</span> <span style="color:#bf0303">"${KRITASHELLEX_VERSION}"</span>
# ShellExtension\Standalone:
# 0 <span style="color:#ca60ca">=</span> Installed by Krita installer
# 1 <span style="color:#ca60ca">=</span> Standalone installer
<span style="color:#0095ff;font-weight:bold">WriteRegDWORD</span> HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> \
<span style="color:#bf0303">"Standalone"</span> 0
# ShellExtension\KritaExePath:
# Path to krita.exe as specified by user or by Krita installer
# Empty <span style="font-weight:bold">if</span> not specified
<span style="color:#0095ff;font-weight:bold">WriteRegStr</span> HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> \
<span style="color:#bf0303">"KritaExePath"</span> <span style="color:#bf0303">"$INSTDIR\bin\krita.exe"</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> HAS_FFMPEG
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"$(SectionBundledFfmpeg)"</span> SEC_ffmpeg
<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
<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
<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
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"-Main_refreshShell"</span>
$<span style="color:#ca60ca">{</span>RefreshShell<span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_FUNCTION_DESCRIPTION_BEGIN</span>
#<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">"Remove previously installed Krita Shell Integration."</span>
<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">"$(SectionRemoveOldVerDesc)"</span>
<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">"$(SectionMainDesc)"</span>
<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">"$(SectionShellExDesc)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> HAS_FFMPEG
<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">"$(SectionBundledFfmpegDesc)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> <span style="color:#9500ff;font-weight:bold">MUI_FUNCTION_DESCRIPTION_END</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"un.$(SectionShellEx)"</span>
$<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
push $R0
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemovingShellEx)"</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> listonly
<span style="color:#0095ff;font-weight:bold">ExecWait</span> <span style="color:#bf0303">"$INSTDIR\shellex\uninstall.exe /S _?=$INSTDIR\shellex"</span> $R0
$<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
$<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>
<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">"$(RemoveShellExFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> both
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemoveShellExFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#bf0303">"$INSTDIR\shellex\uninstall.exe"</span>
<span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK <span style="color:#bf0303">"$INSTDIR\shellex"</span>
<span style="color:#0095ff;font-weight:bold">SetDetailsPrint</span> lastused
<span style="color:#0095ff;font-weight:bold">DetailPrint</span> <span style="color:#bf0303">"$(RemoveShellExDone)"</span>
pop $R0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>Krita_UnregisterShellExtension<span style="color:#ca60ca">}</span>
$<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>
$<span style="color:#ca60ca">{</span>Krita_UnregisterComComonents<span style="color:#ca60ca">}</span> 64
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>Krita_UnregisterComComonents<span style="color:#ca60ca">}</span> 32
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"un.Main_associate"</span>
# TODO: Conditional<span style="color:#ca60ca">,</span> use install log
$<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
$<span style="color:#ca60ca">{</span>Krita_UnregisterFileAssociation<span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"un.Main_Shortcuts"</span>
<span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#bf0303">"$DESKTOP\Krita.lnk"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">insertmacro</span> MUI_STARTMENU_GETFOLDER Krita $KritaStartMenuFolder
<span style="color:#0095ff;font-weight:bold">Delete</span> <span style="color:#bf0303">"$SMPROGRAMS\$KritaStartMenuFolder\${KRITA_PRODUCTNAME}.lnk"</span>
<span style="color:#0095ff;font-weight:bold">RMDir</span> <span style="color:#bf0303">"$SMPROGRAMS\$KritaStartMenuFolder"</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"un.${KRITA_PRODUCTNAME}"</span>
# TODO: Maybe switch to explicit file list or some sort of install log<span style="color:#ca60ca">?</span>
<span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\bin
<span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\lib
<span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\share
<span style="color:#0095ff;font-weight:bold">RMDir</span> /r $INSTDIR\python
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"un.Thing"</span>
<span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK $INSTDIR\shellex
<span style="color:#0095ff;font-weight:bold">DeleteRegKey</span> HKLM <span style="color:#bf0303">"Software\Krita"</span>
<span style="color:#0095ff;font-weight:bold">DeleteRegKey</span> HKLM <span style="color:#bf0303">"Software\Microsoft\Windows\CurrentVersion\Uninstall\${KRITA_UNINSTALL_REGKEY}"</span>
<span style="color:#0095ff;font-weight:bold">Delete</span> $INSTDIR\uninstall.exe
<span style="color:#0095ff;font-weight:bold">RMDir</span> /REBOOTOK $INSTDIR
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Section</span> <span style="color:#bf0303">"un.Main_refreshShell"</span>
$<span style="color:#ca60ca">{</span>RefreshShell<span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SectionEnd</span>
<span style="color:#0095ff;font-weight:bold">Function</span> .onInit
<span style="color:#0095ff;font-weight:bold">SetShellVarContext</span> all
<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>
<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>
<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>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> HAS_FFMPEG
<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>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
<span style="color:#0095ff;font-weight:bold">StrCpy</span> $CreateDesktopIcon 1 # Create desktop icon by default
$<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>
$<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>
<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">"$(MsgRequireWin7)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<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>
# Language selection<span style="color:#ca60ca">,</span> seems that the order is predefined.
<span style="color:#0095ff;font-weight:bold">Push</span> <span style="color:#bf0303">""</span> # This value is for languages auto count
<span style="color:#0095ff;font-weight:bold">Push</span> $<span style="color:#ca60ca">{</span>LANG_ENGLISH<span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Push</span> English
<span style="color:#0095ff;font-weight:bold">Push</span> $<span style="color:#ca60ca">{</span>LANG_TRADCHINESE<span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Push</span> <span style="color:#bf0303">"繁體中文"</span>
<span style="color:#0095ff;font-weight:bold">Push</span> $<span style="color:#ca60ca">{</span>LANG_SIMPCHINESE<span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Push</span> <span style="color:#bf0303">"简体中文"</span>
<span style="color:#0095ff;font-weight:bold">Push</span> A # <span style="color:#ca60ca">=</span> auto count languages
LangDLL::LangDialog <span style="color:#bf0303">"$(^SetupCaption)"</span> <span style="color:#bf0303">"$(SetupLangPrompt)"</span>
<span style="color:#0095ff;font-weight:bold">Pop</span> $LANGUAGE
$<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">"cancel"</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span>Endif<span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
$<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>
<span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
$<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>
<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">"$(Msg64bitOn32bit)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span>Endif<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
$<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>
<span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
$<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>
<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">"$(Msg32bitOn64bit)"</span> \
/SD IDYES \
IDYES lbl_allow32on64
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
lbl_allow32on64:
$<span style="color:#ca60ca">{</span>Endif<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
# Detect ancient Krita versions
$<span style="color:#ca60ca">{</span>DetectKritaMsi32bit<span style="color:#ca60ca">}</span> $KritaMsiProductX86
$<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>
$<span style="color:#ca60ca">{</span>DetectKritaMsi64bit<span style="color:#ca60ca">}</span> $KritaMsiProductX64
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<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">""</span>
$<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">""</span>
$<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>
<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">"$(MsgAncientVerMustBeRemoved)"</span> \
/SD IDYES \
IDYES lbl_removeAncientVer
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
lbl_removeAncientVer:
$<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">""</span>
push $R0
$<span style="color:#ca60ca">{</span>MsiUninstall<span style="color:#ca60ca">}</span> $KritaMsiProductX64 $R0
$<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
$<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>
$<span style="color:#ca60ca">{</span>IfKritaMsi3Alpha<span style="color:#ca60ca">}</span> $KritaMsiProductX64
<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">"$(MsgKrita3alpha1RemoveFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
<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">"$(MsgKrita2msi64bitRemoveFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
pop $R0
<span style="color:#0095ff;font-weight:bold">StrCpy</span> $KritaMsiProductX64 <span style="color:#bf0303">""</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<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">""</span>
push $R0
$<span style="color:#ca60ca">{</span>MsiUninstall<span style="color:#ca60ca">}</span> $KritaMsiProductX86 $R0
$<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
$<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>
<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">"$(MsgKrita2msi32bitRemoveFailed)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
pop $R0
<span style="color:#0095ff;font-weight:bold">StrCpy</span> $KritaMsiProductX86 <span style="color:#bf0303">""</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>DetectKritaNsis<span style="color:#ca60ca">}</span> $KritaNsisVersion $KritaNsisBitness $KritaNsisInstallLocation
$<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">""</span>
push $R0
$<span style="color:#ca60ca">{</span>VersionCompare<span style="color:#ca60ca">}</span> <span style="color:#bf0303">"${KRITA_VERSION}"</span> <span style="color:#bf0303">"$KritaNsisVersion"</span> $R0
$<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
# Same version installed... probably
$<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>
# Very likely the same version
$<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>
<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">"$(MsgKritaSameVerReinstall)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
# Very likely the same version but different arch
$<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>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<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">"$(MsgKrita3264bitSwap)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<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">"$(MsgKrita3264bitSwap)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<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
# Upgrade
$<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>
# Silent about upgrade
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
# Upgrade but different arch
$<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>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
<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">"$(MsgKrita3264bitSwap)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
<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">"$(MsgKrita3264bitSwap)"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<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
$<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>
<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">"$(MsgKritaNewerAlreadyInstalled)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
$<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>
<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">"Error: Unexpected state"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<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>
# Detect <span style="font-weight:bold">if</span> Krita is running...
$<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">"$KritaNsisInstallLocation\bin\krita.exe"</span>
$<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>
<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">"$(MsgKritaRunning)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SetErrorLevel</span> 10
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
pop $R0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
<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>
<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">""</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
# Detect standalone shell extension
# TODO: Would it be possible to update Krita without replacing the standalone shellex<span style="color:#ca60ca">?</span>
<span style="color:#0095ff;font-weight:bold">ClearErrors</span>
<span style="color:#0095ff;font-weight:bold">ReadRegStr</span> $PrevShellExInstallLocation HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> <span style="color:#bf0303">"InstallLocation"</span>
#ReadRegStr $PrevShellExVersion HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> <span style="color:#bf0303">"Version"</span>
<span style="color:#0095ff;font-weight:bold">ReadRegDWORD</span> $PrevShellExStandalone HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> <span style="color:#bf0303">"Standalone"</span>
#ReadRegStr $PrevShellExKritaExePath HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> <span style="color:#bf0303">"KritaExePath"</span>
$<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>
# TODO: Assume no previous version installed or what<span style="color:#ca60ca">?</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<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
#<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>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
#<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>
#SectionSetText $<span style="color:#ca60ca">{</span>SEC_remove_shellex<span style="color:#ca60ca">}</span> <span style="color:#bf0303">""</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
<span style="color:#0095ff;font-weight:bold">Function</span> un.onInit
<span style="color:#0095ff;font-weight:bold">SetShellVarContext</span> all
<span style="color:#ca60ca">!</span><span style="font-weight:bold">ifdef</span> KRITA_INSTALLER_64
$<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>
<span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span>Endif<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">else</span>
$<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>
<span style="color:#0095ff;font-weight:bold">SetRegView</span> 64
$<span style="color:#ca60ca">{</span>Endif<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">endif</span>
# Get and use installer language:
<span style="color:#0095ff;font-weight:bold">Push</span> $0
<span style="color:#0095ff;font-weight:bold">ReadRegStr</span> $0 HKLM <span style="color:#bf0303">"Software\Krita"</span> <span style="color:#bf0303">"InstallerLanguage"</span>
$<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">""</span>
<span style="color:#0095ff;font-weight:bold">StrCpy</span> $LANGUAGE $0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">Pop</span> $0
<span style="color:#0095ff;font-weight:bold">ReadRegDWORD</span> $UninstallShellExStandalone HKLM <span style="color:#bf0303">"Software\Krita\ShellExtension"</span> <span style="color:#bf0303">"Standalone"</span>
$<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>
# Only check here <span style="font-weight:bold">if</span> running in silent mode. It's otherwise checked in
# un.func_UnintallFirstpage_Init in order to display a prompt in the
# correct language.
$<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">"$INSTDIR\bin\krita.exe"</span>
<span style="color:#0095ff;font-weight:bold">SetErrorLevel</span> 10
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
<span style="color:#0095ff;font-weight:bold">Function</span> un.func_UnintallFirstpage_Init
$<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">"$INSTDIR\bin\krita.exe"</span>
$<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>
<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">"$(MsgUninstallKritaRunning)"</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">SetErrorLevel</span> 10
<span style="color:#0095ff;font-weight:bold">Quit</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
<span style="color:#0095ff;font-weight:bold">Function</span> func_ShellExLicensePage_Init
$<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>
# Skip ShellEx license page <span style="font-weight:bold">if</span> not selected
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
<span style="color:#0095ff;font-weight:bold">Var</span> hwndChkDesktopIcon
<span style="color:#0095ff;font-weight:bold">Function</span> func_DesktopShortcutPage_CheckChange
$<span style="color:#ca60ca">{</span>NSD_GetState<span style="color:#ca60ca">}</span> $hwndChkDesktopIcon $CreateDesktopIcon
$<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>
<span style="color:#0095ff;font-weight:bold">StrCpy</span> $CreateDesktopIcon 1
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">StrCpy</span> $CreateDesktopIcon 0
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
<span style="color:#0095ff;font-weight:bold">Function</span> func_BeforeInstallPage_Init
push $R0
nsDialogs::Create 1018
pop $R0
$<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>
<span style="color:#0095ff;font-weight:bold">Abort</span>
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
<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">"$(ConfirmInstallPageHeader)"</span> <span style="color:#bf0303">"$(ConfirmInstallPageDesc)"</span>
$<span style="color:#ca60ca">{</span>NSD_CreateLabel<span style="color:#ca60ca">}</span> 0u 0u 300u 20u <span style="color:#bf0303">"$(DesktopIconPageDesc2)"</span>
pop $R0
$<span style="color:#ca60ca">{</span>NSD_CreateCheckbox<span style="color:#ca60ca">}</span> 0u 20u 300u 10u <span style="color:#bf0303">"$(DesktopIconPageCheckbox)"</span>
pop $hwndChkDesktopIcon
$<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
$<span style="color:#ca60ca">{</span>NSD_Check<span style="color:#ca60ca">}</span> $hwndChkDesktopIcon
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">Else</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>NSD_Uncheck<span style="color:#ca60ca">}</span> $hwndChkDesktopIcon
$<span style="color:#ca60ca">{</span><span style="color:#9500ff;font-weight:bold">EndIf</span><span style="color:#ca60ca">}</span>
$<span style="color:#ca60ca">{</span>NSD_OnClick<span style="color:#ca60ca">}</span> $hwndChkDesktopIcon func_DesktopShortcutPage_CheckChange
$<span style="color:#ca60ca">{</span>NSD_CreateLabel<span style="color:#ca60ca">}</span> 0u 40u 300u 140u <span style="color:#bf0303">"$(ConfirmInstallPageDesc2)"</span>
pop $R0
# TODO: Add install option summary for review<span style="color:#ca60ca">?</span>
nsDialogs::Show
pop $R0
<span style="color:#0095ff;font-weight:bold">FunctionEnd</span>
# Strings
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"translations\English.nsh"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"translations\TradChinese.nsh"</span>
<span style="color:#ca60ca">!</span><span style="font-weight:bold">include</span> <span style="color:#bf0303">"translations\SimpChinese.nsh"</span>
</pre></body></html>