mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-19 19:13:22 +08:00

setup: 1.x version increment git-svn-id: https://pykd.svn.codeplex.com/svn@76457 9b283d60-5439-405e-af05-b73fd8c4d996
492 lines
19 KiB
Plaintext
492 lines
19 KiB
Plaintext
#
|
||
# This is setup script for pykd project.
|
||
# Author: Maksim K. aka airmax
|
||
#
|
||
|
||
SetCompressor LZMA
|
||
|
||
# Modern interface settings
|
||
!include "MUI2.nsh"
|
||
!include "LogicLib.nsh"
|
||
!include "WinVer.nsh"
|
||
!include "FileFunc.nsh"
|
||
!include "x64.nsh"
|
||
!include "Sections.nsh"
|
||
|
||
!addincludedir .\Include
|
||
!addplugindir .\Plugins
|
||
|
||
!include "HasAssembly.nsh"
|
||
|
||
#------------------------------------------------------------------------------
|
||
# General
|
||
#------------------------------------------------------------------------------
|
||
|
||
!define PYTHON_VERSION "2.6"
|
||
!define PYTHON_URL_BASE "http://python.org/ftp/python/2.6.6/"
|
||
|
||
!define PRODUCT_SHORT_NAME "pykd"
|
||
!define PRODUCT_FULL_NAME "Python extension for WinDbg"
|
||
!define PRODUCT_VERSION "0.1.0.13"
|
||
!define PRODUCT_URL "http://pykd.codeplex.com/"
|
||
!define PRODUCT_NAME_AND_VERSION "${PRODUCT_FULL_NAME} ${PRODUCT_ARCH} ${PRODUCT_VERSION}"
|
||
!define PRODUCT_MANUFACTURER "PyKd Team"
|
||
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
!define ARCH "amd64"
|
||
!else
|
||
!define ARCH "x86"
|
||
!endif
|
||
|
||
# Main Install settings
|
||
Name "${PRODUCT_NAME_AND_VERSION}"
|
||
OutFile "${PRODUCT_SHORT_NAME}_${PRODUCT_ARCH}_${PRODUCT_VERSION}_setup.exe"
|
||
|
||
BrandingText "${PRODUCT_FULL_NAME}"
|
||
|
||
#Request application privileges for Windows Vista and 7
|
||
RequestExecutionLevel admin
|
||
|
||
ShowInstDetails show
|
||
ShowUninstDetails show
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Variables
|
||
#------------------------------------------------------------------------------
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Interface Settings
|
||
#------------------------------------------------------------------------------
|
||
!define MUI_ABORTWARNING
|
||
|
||
!define MUI_ICON "MUIOrangeVistaTheme\Clean\installer.ico"
|
||
!define MUI_UNICON "MUIOrangeVistaTheme\Clean\uninstaller.ico"
|
||
|
||
!define MUI_HEADERIMAGE
|
||
!define MUI_HEADERIMAGE_BITMAP "MUIOrangeVistaTheme\Clean\header-l.bmp"
|
||
!define MUI_HEADERIMAGE_UNBITMAP "MUIOrangeVistaTheme\Clean\header-l-un.bmp"
|
||
|
||
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
||
!define MUI_WELCOMEFINISHPAGE_BITMAP "MUIOrangeVistaTheme\Clean\wizard.bmp"
|
||
|
||
!define MUI_DIRECTORYPAGE_TEXT_TOP "Please specify path to $\"winext$\" subfolder of Debugging Tools for Windows (${PRODUCT_ARCH})."
|
||
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Debugging Tools for Windows (${PRODUCT_ARCH})\winext folder"
|
||
|
||
!define MUI_FINISHPAGE_TITLE_3LINES
|
||
!define MUI_FINISHPAGE_TEXT_LARGE
|
||
!define MUI_FINISHPAGE_TEXT "${PRODUCT_NAME_AND_VERSION} was successfully installed.$\n$\n\
|
||
Run WinDbg and type $\".load pykd.pyd$\" to start using it."
|
||
|
||
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||
|
||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Pages
|
||
#------------------------------------------------------------------------------
|
||
# Installer Pages
|
||
!insertmacro MUI_PAGE_WELCOME
|
||
!insertmacro MUI_PAGE_LICENSE "pykd_license.txt"
|
||
!insertmacro MUI_PAGE_COMPONENTS
|
||
!insertmacro MUI_PAGE_DIRECTORY
|
||
!insertmacro MUI_PAGE_INSTFILES
|
||
!insertmacro MUI_PAGE_FINISH
|
||
|
||
# Uninstaller Pages
|
||
#!insertmacro MUI_UNPAGE_CONFIRM
|
||
!insertmacro MUI_UNPAGE_COMPONENTS
|
||
!insertmacro MUI_UNPAGE_INSTFILES
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Languages (first is default language)
|
||
#------------------------------------------------------------------------------
|
||
!insertmacro MUI_LANGUAGE "English"
|
||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Installer file version information
|
||
#------------------------------------------------------------------------------
|
||
VIProductVersion "${PRODUCT_VERSION}"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${PRODUCT_SHORT_NAME}"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "${PRODUCT_NAME_AND_VERSION}"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "${PRODUCT_MANUFACTURER}"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "${PRODUCT_SHORT_NAME} is a trademark of ${PRODUCT_MANUFACTURER}"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "<22> All rights reserved 2010-2012"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${PRODUCT_SHORT_NAME} setup"
|
||
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}"
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Some logic-lib like macro
|
||
#------------------------------------------------------------------------------
|
||
!macro SetRegView64
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
SetRegView 64
|
||
!endif
|
||
!macroend
|
||
!define SetRegView64 "!insertmacro SetRegView64"
|
||
|
||
!macro SetRegView32
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
SetRegView 32
|
||
!endif
|
||
!macroend
|
||
!define SetRegView32 "!insertmacro SetRegView32"
|
||
|
||
!macro _IsVcRuntimeInstalled _a _b _t _f
|
||
!insertmacro _LOGICLIB_TEMP
|
||
Push 'msvcr90.dll'
|
||
Push 'Microsoft.VC90.CRT,version="9.0.21022.8",type="win32",processorArchitecture="${ARCH}",publicKeyToken="1fc8b3b9a1e18e3b"'
|
||
${WinSxS_HasAssembly}
|
||
Pop $_LOGICLIB_TEMP
|
||
!insertmacro _== $_LOGICLIB_TEMP 1 `${_t}` `${_f}`
|
||
!macroend
|
||
!define IsVcRuntimeInstalled `"" IsVcRuntimeInstalled ""`
|
||
!define un.IsVcRuntimeInstalled `"" IsVcRuntimeInstalled ""`
|
||
|
||
!macro _IsPythonInstalled _a _b _t _f
|
||
!insertmacro _LOGICLIB_TEMP
|
||
${SetRegView64}
|
||
# Check Python ${PYTHON_VERSION} ${PRODUCT_ARCH}...
|
||
ReadRegStr $_LOGICLIB_TEMP HKLM "Software\Python\PythonCore\${PYTHON_VERSION}\InstallPath" ""
|
||
${SetRegView32}
|
||
!insertmacro _!= $_LOGICLIB_TEMP "" `${_t}` `${_f}`
|
||
!macroend
|
||
!define IsPythonInstalled `"" IsPythonInstalled ""`
|
||
!define un.IsPythonInstalled `"" IsPythonInstalled ""`
|
||
|
||
!macro _IsDiaRegistered _a _b _t _f
|
||
!insertmacro _LOGICLIB_TEMP
|
||
${SetRegView64}
|
||
ReadRegStr $_LOGICLIB_TEMP HKCR "CLSID\${CLSID_DiaSource}\InprocServer32" ""
|
||
${SetRegView32}
|
||
!insertmacro _!= $_LOGICLIB_TEMP "" `${_t}` `${_f}`
|
||
!macroend
|
||
!define IsDiaRegistered `"" IsDiaRegistered ""`
|
||
!define un.IsDiaRegistered `"" IsDiaRegistered ""`
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Check WinDbg executable presence in selected directory
|
||
#------------------------------------------------------------------------------
|
||
Function .onVerifyInstDir
|
||
${IfNotThen} ${FileExists} "$INSTDIR\..\WinDbg.exe" ${|} Abort ${|}
|
||
|
||
${GetFileName} "$INSTDIR" $R0
|
||
${IfThen} $R0 != "WinExt" ${|} Abort ${|}
|
||
FunctionEnd
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Installer Sections
|
||
#------------------------------------------------------------------------------
|
||
|
||
Section "${PRODUCT_SHORT_NAME} ${PRODUCT_ARCH}" sec_pykd
|
||
SectionIn RO
|
||
|
||
# Set Section properties
|
||
SetOverwrite on
|
||
|
||
# CURRENT USER
|
||
SetShellVarContext current
|
||
|
||
DetailPrint "Extracting extension..."
|
||
SetOutPath "$INSTDIR"
|
||
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
File ".\binaries\x64\pykd.pyd"
|
||
!else
|
||
File ".\binaries\x86\pykd.pyd"
|
||
!endif
|
||
SectionEnd
|
||
|
||
Section "Snippets" sec_snippets
|
||
# Set Section properties
|
||
SetOverwrite on
|
||
|
||
DetailPrint "Extracting snippets..."
|
||
SetOutPath "$DOCUMENTS\${PRODUCT_SHORT_NAME}\Snippets"
|
||
File "..\branch\0.1.x\snippets\*.py"
|
||
SectionEnd
|
||
|
||
Section "Samples" sec_samples
|
||
# Set Section properties
|
||
SetOverwrite on
|
||
|
||
DetailPrint "Extracting samples..."
|
||
SetOutPath "$DOCUMENTS\${PRODUCT_SHORT_NAME}\Samples"
|
||
File /r "..\branch\0.1.x\samples\*.py"
|
||
SectionEnd
|
||
|
||
Section "Python ${PYTHON_VERSION} ${PRODUCT_ARCH}" sec_python
|
||
DetailPrint "Downloading Python..."
|
||
inetc::get /CAPTION "${PRODUCT_SHORT_NAME}" /QUESTION "" /POPUP "" /TIMEOUT=30000 "${PYTHON_URL_BASE}${PYTHON_INSTALLER}" "$TEMP\${PYTHON_INSTALLER}" /END
|
||
Pop $0
|
||
${If} $0 == "OK"
|
||
DetailPrint "Successfully downloaded."
|
||
DetailPrint "Installing Python..."
|
||
ClearErrors
|
||
ExecWait '"msiexec" /i "$TEMP\${PYTHON_INSTALLER}"'
|
||
IfErrors PythonInstallFailed
|
||
DetailPrint "Successfully installed."
|
||
${SetRegView64}
|
||
WriteRegDWORD HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallPython" 1
|
||
${SetRegView32}
|
||
${Else}
|
||
PythonInstallFailed:
|
||
DetailPrint "Operation failed. Installation will be continued without Python."
|
||
DetailPrint "Please download and install it manually:"
|
||
DetailPrint "${PYTHON_URL_BASE}${PYTHON_INSTALLER}"
|
||
${EndIf}
|
||
SectionEnd
|
||
|
||
Section "Visual C++ 2008 SP1 (${PRODUCT_ARCH}) runtime" sec_vcruntime
|
||
DetailPrint "Installing Microsoft Visual C++ 2008 SP1 (${PRODUCT_ARCH}) runtime library..."
|
||
|
||
SetOutPath "$TEMP"
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
File ".\binaries\x64\vcredist_${PRODUCT_ARCH}.exe"
|
||
!else
|
||
File ".\binaries\x86\vcredist_${PRODUCT_ARCH}.exe"
|
||
!endif
|
||
|
||
ExecWait "$TEMP\vcredist_${PRODUCT_ARCH}.exe"
|
||
${IfNot} ${Errors}
|
||
DetailPrint "Successfully installed."
|
||
${SetRegView64}
|
||
WriteRegDWORD HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallVcRuntime" 1
|
||
${SetRegView32}
|
||
${Else}
|
||
DetailPrint "Operation failed. Installation will be continued without Visual C++ runtime."
|
||
DetailPrint "Please download and install it manually."
|
||
${EndIf}
|
||
SectionEnd
|
||
|
||
Section "Debug Interface Access (${PRODUCT_ARCH}) library" sec_msdia
|
||
DetailPrint "Registering Debug Interface Access (${PRODUCT_ARCH}) library..."
|
||
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
${DisableX64FSRedirection}
|
||
ClearErrors
|
||
ExecWait '"$SYSDIR\regsvr32.exe" /s "$COMMONFILES64\Microsoft Shared\VC\${MSDIA_DLL_NAME}"'
|
||
${EnableX64FSRedirection}
|
||
!else
|
||
RegDLL "$COMMONFILES\Microsoft Shared\VC\${MSDIA_DLL_NAME}"
|
||
!endif
|
||
|
||
${IfNot} ${Errors}
|
||
DetailPrint "Successfully registered."
|
||
${SetRegView64}
|
||
WriteRegDWORD HKLM "Software\${PRODUCT_SHORT_NAME}" "UnregisterDia" 1
|
||
${SetRegView32}
|
||
${Else}
|
||
DetailPrint "Operation failed. Please register it manually."
|
||
${EndIf}
|
||
SectionEnd
|
||
|
||
Section -FinishSection
|
||
${SetRegView64}
|
||
DetailPrint "Storing installation folder..."
|
||
WriteRegStr HKLM "Software\${PRODUCT_SHORT_NAME}" "InstallPath" "$INSTDIR"
|
||
|
||
DetailPrint "Adding extension dir and snippets dir to PYTHONPATH..."
|
||
WriteRegStr HKLM "Software\Python\PythonCore\${PYTHON_VERSION}\PythonPath\${PRODUCT_SHORT_NAME}" "" "$INSTDIR;$DOCUMENTS\${PRODUCT_SHORT_NAME}\Snippets;$DOCUMENTS\${PRODUCT_SHORT_NAME}\Samples"
|
||
|
||
DetailPrint "Registering uninstaller..."
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}" "DisplayName" "${PRODUCT_FULL_NAME} (${PRODUCT_ARCH})"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}" "UninstallString" "$LOCALAPPDATA\${PRODUCT_SHORT_NAME}\uninstall_${PRODUCT_ARCH}.exe"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}" "Publisher" "${PRODUCT_MANUFACTURER}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}" "URLInfoAbout" "${PRODUCT_URL}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}" "DisplayIcon" "$LOCALAPPDATA\${PRODUCT_SHORT_NAME}\uninstall_${PRODUCT_ARCH}.exe"
|
||
${SetRegView32}
|
||
|
||
DetailPrint "Writing uninstaller..."
|
||
CreateDirectory "$LOCALAPPDATA\${PRODUCT_SHORT_NAME}"
|
||
WriteUninstaller "$LOCALAPPDATA\${PRODUCT_SHORT_NAME}\uninstall_${PRODUCT_ARCH}.exe"
|
||
SectionEnd
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Before first page displayed
|
||
#------------------------------------------------------------------------------
|
||
|
||
# Workaround to allow ${IsVcRuntimeInstalled} work properly
|
||
!define WinSxS_HasAssembly `Call WinSxS_HasAssembly`
|
||
|
||
Function .onInit
|
||
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${PRODUCT_SHORT_NAME}_${PRODUCT_ARCH}_setup") i .r1 ?e'
|
||
Pop $R0
|
||
${If} $R0 != 0
|
||
MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running."
|
||
Abort
|
||
${EndIf}
|
||
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
${IfNot} ${RunningX64}
|
||
MessageBox MB_OK|MB_ICONEXCLAMATION "This installation requires 64-bit OS."
|
||
Abort
|
||
${EndIf}
|
||
!endif
|
||
|
||
${SetRegView64}
|
||
# Get installation folder from registry if available
|
||
ReadRegStr $INSTDIR HKLM "Software\${PRODUCT_SHORT_NAME}" "InstallPath"
|
||
${SetRegView32}
|
||
|
||
${If} ${IsPythonInstalled}
|
||
!insertmacro UnselectSection ${sec_python}
|
||
SectionSetText ${sec_python} ""
|
||
${EndIf}
|
||
|
||
${If} ${IsVcRuntimeInstalled}
|
||
!insertmacro UnselectSection ${sec_vcruntime}
|
||
SectionSetText ${sec_vcruntime} ""
|
||
${EndIf}
|
||
|
||
${If} ${IsDiaRegistered}
|
||
!insertmacro UnselectSection ${sec_msdia}
|
||
SectionSetText ${sec_msdia} ""
|
||
${EndIf}
|
||
FunctionEnd
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Installer sections descriptions
|
||
#------------------------------------------------------------------------------
|
||
|
||
LangString DESC_sec_pykd ${LANG_ENGLISH} "${PRODUCT_FULL_NAME}"
|
||
LangString DESC_sec_snippets ${LANG_ENGLISH} "Useful code snippets. Will be installed in $DOCUMENTS\${PRODUCT_SHORT_NAME}\Snippets"
|
||
LangString DESC_sec_samples ${LANG_ENGLISH} "Code samples. Will be installed in $DOCUMENTS\${PRODUCT_SHORT_NAME}\Samples"
|
||
LangString DESC_sec_python ${LANG_ENGLISH} "Let installer download and setup Python ${PYTHON_VERSION} ${PRODUCT_ARCH}"
|
||
LangString DESC_sec_vcruntime ${LANG_ENGLISH} "Let installer download and setup Microsoft Visual C++ 2008 SP1 (${PRODUCT_ARCH}) runtime library"
|
||
LangString DESC_sec_msdia ${LANG_ENGLISH} "Let installer register Debug Interface Access (${PRODUCT_ARCH}) library"
|
||
|
||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${sec_pykd} $(DESC_sec_pykd)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${sec_snippets} $(DESC_sec_snippets)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${sec_samples} $(DESC_sec_samples)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${sec_python} $(DESC_sec_python)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${sec_vcruntime} $(DESC_sec_vcruntime)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${sec_msdia} $(DESC_sec_msdia)
|
||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Uninstaller sections
|
||
#------------------------------------------------------------------------------
|
||
Section "un.${PRODUCT_SHORT_NAME} ${PRODUCT_ARCH}" unsec_pykd
|
||
SectionIn RO
|
||
|
||
${SetRegView64}
|
||
DetailPrint "Retriving installation folder from registry..."
|
||
ReadRegStr $INSTDIR HKLM "Software\${PRODUCT_SHORT_NAME}" "InstallPath"
|
||
|
||
DetailPrint "Deleting extension dir and snippets dir from PYTHONPATH..."
|
||
DeleteRegKey HKLM "Software\Python\PythonCore\${PYTHON_VERSION}\PythonPath\${PRODUCT_SHORT_NAME}"
|
||
|
||
DetailPrint "Unregistering uninstaller..."
|
||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_SHORT_NAME}"
|
||
${SetRegView32}
|
||
|
||
DetailPrint "Deleting extension..."
|
||
Delete "$INSTDIR\pykd.pyd"
|
||
|
||
# Let user delete snippets himself
|
||
#RMDir "$DOCUMENTS\${PRODUCT_SHORT_NAME}"
|
||
|
||
DetailPrint "Deleting uninstaller..."
|
||
Delete "$LOCALAPPDATA\${PRODUCT_SHORT_NAME}\uninstall_${PRODUCT_ARCH}.exe"
|
||
RMDir "$LOCALAPPDATA\${PRODUCT_SHORT_NAME}"
|
||
SectionEnd
|
||
|
||
Section /o "un.Python ${PYTHON_VERSION} ${PRODUCT_ARCH}" unsec_python
|
||
DetailPrint "Uninstalling Python..."
|
||
ExecWait '"msiexec" /x ${PYTHON_PRODUCT_CODE}'
|
||
SectionEnd
|
||
|
||
Section /o "un.Debug Interface Access (${PRODUCT_ARCH}) library" unsec_msdia
|
||
DetailPrint "Unregistering Debug Interface Access (${PRODUCT_ARCH}) library..."
|
||
${SetRegView64}
|
||
ReadRegStr $R0 HKCR "CLSID\${CLSID_DiaSource}\InprocServer32" ""
|
||
${SetRegView32}
|
||
|
||
!if ${PRODUCT_ARCH} == "x64"
|
||
${DisableX64FSRedirection}
|
||
ClearErrors
|
||
ExecWait '"$SYSDIR\regsvr32.exe" /s /u "$R0"'
|
||
${EnableX64FSRedirection}
|
||
!else
|
||
UnRegDLL $R0
|
||
!endif
|
||
SectionEnd
|
||
|
||
Section /o "un.Visual C++ 2008 SP1 (${PRODUCT_ARCH}) runtime" unsec_vcruntime
|
||
DetailPrint "Uninstalling Microsoft Visual C++ 2008 SP1 (${PRODUCT_ARCH}) runtime library..."
|
||
ExecWait '"msiexec" /x ${VCRUNTIME_PRODUCT_CODE}'
|
||
SectionEnd
|
||
|
||
Section -un.FinishSection
|
||
${SetRegView64}
|
||
WriteRegDWORD HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallPython" 0
|
||
WriteRegDWORD HKLM "Software\${PRODUCT_SHORT_NAME}" "UnregisterDia" 0
|
||
WriteRegDWORD HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallVcRuntime" 0
|
||
# DeleteRegValue HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallPython"
|
||
# DeleteRegValue HKLM "Software\${PRODUCT_SHORT_NAME}" "UnregisterDia"
|
||
# DeleteRegValue HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallVcRuntime"
|
||
${SetRegView32}
|
||
SectionEnd
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Before first page displayed
|
||
#------------------------------------------------------------------------------
|
||
|
||
# Workaround to allow ${IsVcRuntimeInstalled} work properly
|
||
!undef WinSxS_HasAssembly
|
||
!define WinSxS_HasAssembly `Call un.WinSxS_HasAssembly`
|
||
|
||
Function un.onInit
|
||
${SetRegView64}
|
||
ReadRegDWORD $R0 HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallPython"
|
||
${SetRegView32}
|
||
|
||
${If} ${Errors}
|
||
${OrIf} $R0 == 0
|
||
#${OrIfNot} ${IsPythonInstalled}
|
||
!insertmacro UnselectSection ${unsec_python}
|
||
SectionSetText ${unsec_python} ""
|
||
${EndIf}
|
||
|
||
${SetRegView64}
|
||
ReadRegDWORD $R0 HKLM "Software\${PRODUCT_SHORT_NAME}" "UnregisterDia"
|
||
${SetRegView32}
|
||
|
||
${If} ${Errors}
|
||
${OrIf} $R0 == 0
|
||
#${OrIfNot} ${IsDiaRegistered}
|
||
!insertmacro UnselectSection ${unsec_msdia}
|
||
SectionSetText ${unsec_msdia} ""
|
||
${EndIf}
|
||
|
||
${SetRegView64}
|
||
ReadRegDWORD $R0 HKLM "Software\${PRODUCT_SHORT_NAME}" "UninstallVcRuntime"
|
||
${SetRegView32}
|
||
|
||
${If} ${Errors}
|
||
${OrIf} $R0 == 0
|
||
#${OrIfNot} ${IsVcRuntimeInstalled}
|
||
!insertmacro UnselectSection ${unsec_vcruntime}
|
||
SectionSetText ${unsec_vcruntime} ""
|
||
${EndIf}
|
||
FunctionEnd
|
||
|
||
#------------------------------------------------------------------------------
|
||
# Uninstaller sections descriptions
|
||
#------------------------------------------------------------------------------
|
||
|
||
LangString DESC_unsec_pykd ${LANG_ENGLISH} "${PRODUCT_FULL_NAME}"
|
||
LangString DESC_unsec_python ${LANG_ENGLISH} "Uninstall Python ${PYTHON_VERSION} ${PRODUCT_ARCH}"
|
||
LangString DESC_unsec_msdia ${LANG_ENGLISH} "Unregister Debug Interface Access (${PRODUCT_ARCH}) library"
|
||
LangString DESC_unsec_vcruntime ${LANG_ENGLISH} "Uninstall Microsoft Visual C++ 2008 SP1 (${PRODUCT_ARCH}) runtime library"
|
||
|
||
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${unsec_pykd} $(DESC_unsec_pykd)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${unsec_python} $(DESC_unsec_python)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${unsec_msdia} $(DESC_unsec_msdia)
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${unsec_vcruntime} $(DESC_unsec_vcruntime)
|
||
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
|