From 9f5a2ec9d41ff0b2a464ce6c488d1bc4652acf15 Mon Sep 17 00:00:00 2001 From: "SND\\air_max_cp" Date: Sat, 5 Mar 2011 20:19:18 +0000 Subject: [PATCH] [+] add setup script. git-svn-id: https://pykd.svn.codeplex.com/svn@62250 9b283d60-5439-405e-af05-b73fd8c4d996 --- setup/Include/HasAssembly.nsh | 43 ++++++ setup/Plugins/inetc.dll | Bin 0 -> 20480 bytes setup/pykd_license.txt | 31 +++++ setup/pykd_setup_common.nsh | 248 ++++++++++++++++++++++++++++++++++ setup/pykd_setup_x64.nsi | 9 ++ setup/pykd_setup_x86.nsi | 9 ++ 6 files changed, 340 insertions(+) create mode 100644 setup/Include/HasAssembly.nsh create mode 100644 setup/Plugins/inetc.dll create mode 100644 setup/pykd_license.txt create mode 100644 setup/pykd_setup_common.nsh create mode 100644 setup/pykd_setup_x64.nsi create mode 100644 setup/pykd_setup_x86.nsi diff --git a/setup/Include/HasAssembly.nsh b/setup/Include/HasAssembly.nsh new file mode 100644 index 0000000..0e1071b --- /dev/null +++ b/setup/Include/HasAssembly.nsh @@ -0,0 +1,43 @@ +Function WinSxS_HasAssembly ;legacyDllName,(Strong)AssemblyName +/* +push 'msvcr80.dll' +push 'Microsoft.VC80.CRT,version="8.0.50727.42",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"' +call WinSxS_HasAssembly +pop $0 ;0 on fail, 1 if it is in WinSxS or 2 if LoadLibrary worked on pre xp (call GetDLLVersion to make sure if you require a minimum version) +*/ +Exch $8 +Exch +Exch $7 +push $9 +StrCpy $9 0 +push $0 +push $R0 +push $R1 +${If} ${AtLeastWinXP} + System::Call "sxs::CreateAssemblyCache(*i.R0,i0)i.r0" + ${If} $0 == 0 + System::Call '*(i 24,i0,l,i0,i0)i.R1' ;TODO,BUGBUG: check alloc success + System::Call `$R0->4(i 0,w '$8',i $R1)i.r0` ;IAssemblyCache::QueryAssemblyInfo + ${If} $0 == 0 + System::Call '*$R1(i,i.r0)' + IntOp $0 $0 & 1 ;ASSEMBLYINFO_FLAG_INSTALLED=1 + ${IfThen} $0 <> 0 ${|} StrCpy $9 1 ${|} + ${EndIf} + System::Free $R1 + System::Call $R0->2() ;IAssemblyCache::Release + ${EndIf} +${Else} + System::Call kernel32::LoadLibrary(t"$7")i.r0 + ${If} $0 != 0 + StrCpy $9 2 + System::Call 'kernel32::FreeLibrary(i r0)' + ${EndIf} +${EndIf} +pop $R1 +pop $R0 +pop $0 +Exch 2 +pop $8 +pop $7 +Exch $9 +FunctionEnd \ No newline at end of file diff --git a/setup/Plugins/inetc.dll b/setup/Plugins/inetc.dll new file mode 100644 index 0000000000000000000000000000000000000000..89d989f430d9ffe3957651bbe31e88804c7b3b77 GIT binary patch literal 20480 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 literal 0 HcmV?d00001 diff --git a/setup/pykd_license.txt b/setup/pykd_license.txt new file mode 100644 index 0000000..0218f75 --- /dev/null +++ b/setup/pykd_license.txt @@ -0,0 +1,31 @@ +Microsoft Public License (Ms-PL) + +This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. + +1. Definitions + +The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. + +A "contribution" is the original software, or any additions or changes to the software. + +A "contributor" is any person that distributes its contribution under this license. + +"Licensed patents" are a contributor's patent claims that read directly on its contribution. + +2. Grant of Rights + +(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. + +(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. + +3. Conditions and Limitations + +(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. + +(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. + +(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. + +(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. + +(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. \ No newline at end of file diff --git a/setup/pykd_setup_common.nsh b/setup/pykd_setup_common.nsh new file mode 100644 index 0000000..deebb16 --- /dev/null +++ b/setup/pykd_setup_common.nsh @@ -0,0 +1,248 @@ +# +# 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" + +!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.0.0.16" +!define PRODUCT_URL "http://pykd.codeplex.com/" +!define PRODUCT_NAME_AND_VERSION "${PRODUCT_FULL_NAME} ${PRODUCT_ARCH} ${PRODUCT_VERSION}" + +!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}" + +#Get installation folder from registry if available +InstallDirRegKey HKLM "Software\${PRODUCT_SHORT_NAME}" "${PRODUCT_ARCH}" + +#Request application privileges for Windows Vista and 7 +RequestExecutionLevel admin + +ShowInstDetails show + +#------------------------------------------------------------------------------ +# Variables +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Interface Settings +#------------------------------------------------------------------------------ +!define MUI_ABORTWARNING + +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico" + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp" + +!define MUI_WELCOMEPAGE_TITLE_3LINES +!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.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 plugin." + +!define MUI_FINISHPAGE_NOAUTOCLOSE + +#------------------------------------------------------------------------------ +# Pages +#------------------------------------------------------------------------------ +# Installer Pages +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "pykd_license.txt" +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +#------------------------------------------------------------------------------ +# 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" "${MANUFACTURER}" +#VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "${PRODUCT_NAME} is a trademark of ${MANUFACTURER} company" +VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© All rights reserved" +VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${PRODUCT_SHORT_NAME} setup" +VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}" + +#------------------------------------------------------------------------------ +# Before first page displayed +#------------------------------------------------------------------------------ +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 +FunctionEnd + + +#------------------------------------------------------------------------------ +# 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}" Section1 + DetailPrint "Check Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library..." + push 'msvcr80.dll' + #push 'Microsoft.VC80.CRT,version="8.0.50727.4027",type="win32",processorArchitecture="${ARCH}",publicKeyToken="1fc8b3b9a1e18e3b"' + push 'Microsoft.VC80.CRT,version="8.0.50727.4053",type="win32",processorArchitecture="${ARCH}",publicKeyToken="1fc8b3b9a1e18e3b"' + call WinSxS_HasAssembly + pop $R0 + + ${If} $R0 == 1 + DetailPrint "Success" + ${Else} + DetailPrint "Not find" + DetailPrint "Going to download and install it." + + MessageBox MB_YESNOCANCEL|MB_ICONQUESTION "${PRODUCT_SHORT_NAME} requires Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library. Download and install it automatically?$\n\ + Press YES to allow.$\n\ + Press NO to continue without runtime.$\n\ + Press CANCEL to exit from installer." IDYES DownloadAndInstallRuntime IDNO ContinueNoRuntime + DetailPrint "${PRODUCT_FULL_NAME} installation cancelled." + Abort + DownloadAndInstallRuntime: + DetailPrint "Downloading Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library..." + inetc::get /CAPTION "${PRODUCT_SHORT_NAME}" /QUESTION "" /POPUP "" /TIMEOUT=30000 "${VC_RUNTIME_URL}" "$TEMP\vcredist_${PRODUCT_ARCH}.exe" /END + Pop $0 + ${If} $0 == "OK" + DetailPrint "Successfully downloaded." + DetailPrint "Installing Microsoft Visual C++ 2005 SP1 (${PRODUCT_ARCH}) runtime library..." + IfErrors ClearErrorFlag + ClearErrorFlag: + ExecWait "$TEMP\vcredist_${PRODUCT_ARCH}.exe" + IfErrors RuntimeInstallFailed + DetailPrint "Successfully installed." + ${Else} + RuntimeInstallFailed: + DetailPrint "Operation failed. Installation will be continued without Visual C++ runtime." + DetailPrint "Please download and install it manually from product download page:" + DetailPrint "${VC_RUNTIME_URL}" + ${EndIf} + ContinueNoRuntime: + + ${EndIf} + + + DetailPrint "Check Python ${PYTHON_VERSION} ${PRODUCT_ARCH}..." + !if ${PRODUCT_ARCH} == "x64" + ${IfThen} ${RunningX64} ${|} SetRegView 64 ${|} + !endif + ReadRegStr $R0 HKLM "Software\Python\PythonCore\${PYTHON_VERSION}\InstallPath" "" + !if ${PRODUCT_ARCH} == "x64" + ${IfThen} ${RunningX64} ${|} SetRegView 32 ${|} + !endif + + ${If} $R0 == "" + DetailPrint "Appropiate Python version was no not find in:" + DetailPrint "HKLM\Software\Python\PythonCore\${PYTHON_VERSION}\InstallPath" + DetailPrint "Going to download and install it." + MessageBox MB_YESNOCANCEL|MB_ICONQUESTION "${PRODUCT_SHORT_NAME} requires Python ${PYTHON_VERSION}. Download and install it automatically?$\n\ + Press YES to allow.$\n\ + Press NO to continue without Python.$\n\ + Press CANCEL to exit from installer." IDYES DownloadAndInstallPython IDNO ContinueNoPython + DetailPrint "${PRODUCT_FULL_NAME} installation cancelled." + Abort + DownloadAndInstallPython: + 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..." + IfErrors ClearErrorFlag1 + ClearErrorFlag1: + ExecWait '"msiexec" /i "$TEMP\${PYTHON_INSTALLER}"' + IfErrors PythonInstallFailed + DetailPrint "Successfully installed." + ${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} + ContinueNoPython: + ${Else} + DetailPrint "Python ${PYTHON_VERSION} ${PRODUCT_ARCH} location: $R0" + ${EndIf} + + + # Set Section properties + SetOverwrite on + + # CURRENT USER + SetShellVarContext current + + # Set Section Files and Shortcuts + SetOutPath "$INSTDIR" + + # Extract files + !if ${PRODUCT_ARCH} == "x64" + File "..\x64\Release\pykd.pyd" + !else + File "..\Release\pykd.pyd" + !endif +SectionEnd + +Section -FinishSection + #Store installation folder + WriteRegStr HKLM "Software\${PRODUCT_SHORT_NAME}" "${PRODUCT_ARCH}" "$INSTDIR" +SectionEnd diff --git a/setup/pykd_setup_x64.nsi b/setup/pykd_setup_x64.nsi new file mode 100644 index 0000000..93f18ef --- /dev/null +++ b/setup/pykd_setup_x64.nsi @@ -0,0 +1,9 @@ +# +# This is setup script for pykd project. +# Author: Maksim K. aka airmax +# + +!define PRODUCT_ARCH "x64" +!define PYTHON_INSTALLER "python-2.6.6.amd64.msi" +!define VC_RUNTIME_URL "http://download.microsoft.com/download/6/B/B/6BB661D6-A8AE-4819-B79F-236472F6070C/vcredist_x64.exe" +!include "pykd_setup_common.nsh" diff --git a/setup/pykd_setup_x86.nsi b/setup/pykd_setup_x86.nsi new file mode 100644 index 0000000..e3a1d50 --- /dev/null +++ b/setup/pykd_setup_x86.nsi @@ -0,0 +1,9 @@ +# +# This is setup script for pykd project. +# Author: Maksim K. aka airmax +# + +!define PRODUCT_ARCH "x86" +!define PYTHON_INSTALLER "python-2.6.6.msi" +!define VC_RUNTIME_URL "http://download.microsoft.com/download/6/B/B/6BB661D6-A8AE-4819-B79F-236472F6070C/vcredist_x86.exe" +!include "pykd_setup_common.nsh"