git-svn-id: https://pykd.svn.codeplex.com/svn@76617 9b283d60-5439-405e-af05-b73fd8c4d996

This commit is contained in:
SND\kernelnet_cp 2012-05-24 12:23:26 +00:00 committed by Mikhail I. Izmestev
commit 080feb5709
3 changed files with 146 additions and 33 deletions

View File

@ -27,7 +27,7 @@ SetCompressor LZMA
!define PRODUCT_SHORT_NAME "pykd"
!define PRODUCT_FULL_NAME "Python extension for WinDbg"
!define PRODUCT_VERSION "0.0.0.20"
!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"
@ -111,7 +111,7 @@ 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" "© All rights reserved 2010-2011"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© All rights reserved 2010-2012"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${PRODUCT_SHORT_NAME} setup"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}"
@ -134,13 +134,12 @@ VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}"
!macro _IsVcRuntimeInstalled _a _b _t _f
!insertmacro _LOGICLIB_TEMP
Push 'msvcr80.dll'
Push 'Microsoft.VC80.CRT,version="8.0.50727.6195",type="win32",processorArchitecture="${ARCH}",publicKeyToken="1fc8b3b9a1e18e3b"'
${WinSxS_HasAssembly}
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 ""`
@ -155,6 +154,16 @@ VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}"
!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
#------------------------------------------------------------------------------
@ -182,9 +191,9 @@ Section "${PRODUCT_SHORT_NAME} ${PRODUCT_ARCH}" sec_pykd
SetOutPath "$INSTDIR"
!if ${PRODUCT_ARCH} == "x64"
File "..\x64\Release\pykd.pyd"
File ".\binaries\x64\pykd.pyd"
!else
File "..\Release\pykd.pyd"
File ".\binaries\x86\pykd.pyd"
!endif
SectionEnd
@ -193,8 +202,17 @@ Section "Snippets" sec_snippets
SetOverwrite on
DetailPrint "Extracting snippets..."
SetOutPath "$DOCUMENTS\${PRODUCT_SHORT_NAME}"
File "..\Snippets\*.py"
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
@ -204,11 +222,13 @@ Section "Python ${PYTHON_VERSION} ${PRODUCT_ARCH}" sec_python
${If} $0 == "OK"
DetailPrint "Successfully downloaded."
DetailPrint "Installing Python..."
IfErrors ClearErrorFlag1
ClearErrorFlag1:
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."
@ -217,24 +237,48 @@ Section "Python ${PYTHON_VERSION} ${PRODUCT_ARCH}" sec_python
${EndIf}
SectionEnd
Section "Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime" sec_vcruntime
DetailPrint "Installing Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library..."
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 "..\x64\Release\vcredist_${PRODUCT_ARCH}.exe"
File ".\binaries\x64\vcredist_${PRODUCT_ARCH}.exe"
!else
File "..\Release\vcredist_${PRODUCT_ARCH}.exe"
File ".\binaries\x86\vcredist_${PRODUCT_ARCH}.exe"
!endif
ExecWait "$TEMP\vcredist_${PRODUCT_ARCH}.exe"
IfErrors RuntimeInstallFailed
DetailPrint "Successfully installed."
Return
${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
RuntimeInstallFailed:
DetailPrint "Operation failed. Installation will be continued without Visual C++ runtime."
DetailPrint "Please download and install it manually."
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
@ -243,7 +287,7 @@ Section -FinishSection
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}"
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})"
@ -295,6 +339,11 @@ Function .onInit
!insertmacro UnselectSection ${sec_vcruntime}
SectionSetText ${sec_vcruntime} ""
${EndIf}
${If} ${IsDiaRegistered}
!insertmacro UnselectSection ${sec_msdia}
SectionSetText ${sec_msdia} ""
${EndIf}
FunctionEnd
#------------------------------------------------------------------------------
@ -302,15 +351,19 @@ FunctionEnd
#------------------------------------------------------------------------------
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}"
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++ 2005 SP1 (${PRODUCT_ARCH}) runtime library"
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
#------------------------------------------------------------------------------
@ -346,11 +399,38 @@ Section /o "un.Python ${PYTHON_VERSION} ${PRODUCT_ARCH}" unsec_python
ExecWait '"msiexec" /x ${PYTHON_PRODUCT_CODE}'
SectionEnd
Section /o "un.Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime" unsec_vcruntime
DetailPrint "Uninstalling Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library..."
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
#------------------------------------------------------------------------------
@ -360,12 +440,35 @@ SectionEnd
!define WinSxS_HasAssembly `Call un.WinSxS_HasAssembly`
Function un.onInit
${IfNot} ${IsPythonInstalled}
${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}
${IfNot} ${IsVcRuntimeInstalled}
${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}
@ -377,10 +480,12 @@ FunctionEnd
LangString DESC_unsec_pykd ${LANG_ENGLISH} "${PRODUCT_FULL_NAME}"
LangString DESC_unsec_python ${LANG_ENGLISH} "Uninstall Python ${PYTHON_VERSION} ${PRODUCT_ARCH}"
LangString DESC_unsec_vcruntime ${LANG_ENGLISH} "Uninstall Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library"
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

View File

@ -10,6 +10,10 @@
!define PYTHON_PRODUCT_CODE "{6151CF20-0BD8-4023-A4A0-6A86DCFE58E6}"
# When changing VC runtime vesion don't forget to update ProductCode appropriately
!define VCRUNTIME_PRODUCT_CODE "{ad8a2fa1-06e7-4b0d-927d-6e54b3d31028}"
# VC9 (VS2008) SP1 + MFC Security Update
!define VCRUNTIME_PRODUCT_CODE "{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}"
!define MSDIA_DLL_NAME "msdia90.dll"
!define CLSID_DiaSource "{4C41678E-887B-4365-A09E-925D28DB33C2}"
!include "pykd_setup_common.nsh"

View File

@ -10,6 +10,10 @@
!define PYTHON_PRODUCT_CODE "{6151CF20-0BD8-4023-A4A0-6A86DCFE58E5}"
# When changing VC runtime vesion don't forget to update ProductCode appropriately
!define VCRUNTIME_PRODUCT_CODE "{710f4c1c-cc18-4c49-8cbf-51240c89a1a2}"
# VC9 (VS2008) SP1 + MFC Security Update
!define VCRUNTIME_PRODUCT_CODE "{9BE518E6-ECC6-35A9-88E4-87755C07200F}"
!define MSDIA_DLL_NAME "msdia90.dll"
!define CLSID_DiaSource "{4C41678E-887B-4365-A09E-925D28DB33C2}"
!include "pykd_setup_common.nsh"