From 2d91c762d891e8c462e914f5f6a7ae2924e6f079 Mon Sep 17 00:00:00 2001 From: Christoph Wille Date: Sun, 3 Sep 2006 14:33:33 +0000 Subject: [PATCH] Old NSIS setup removed, CCNET configuration updated git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1753 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- setup/FileAssociations.nsh | 85 ------- setup/SetupScript.nsi | 224 ----------------- setup/SharpDevelop.wxs | 479 ------------------------------------- setup/buildSetup.bat | 3 - setup/readme.txt | 40 ---- setup/wizard-image.bmp | Bin 154542 -> 0 bytes 6 files changed, 831 deletions(-) delete mode 100644 setup/FileAssociations.nsh delete mode 100644 setup/SetupScript.nsi delete mode 100644 setup/SharpDevelop.wxs delete mode 100644 setup/buildSetup.bat delete mode 100644 setup/readme.txt delete mode 100644 setup/wizard-image.bmp diff --git a/setup/FileAssociations.nsh b/setup/FileAssociations.nsh deleted file mode 100644 index db655800ac..0000000000 --- a/setup/FileAssociations.nsh +++ /dev/null @@ -1,85 +0,0 @@ -!ifndef _FILEASSOC_NSH_ -!define _FILEASSOC_NSH_ - - -!ifdef HAVE_SYSTEM_PLUGIN -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; RefreshShellIcons based on -;; http://nsis.sourceforge.net/archive/nsisweb.php?page=236&instances=0 -;; by jerome tremblay - april 2003 - -!define SHCNE_ASSOCCHANGED 0x08000000 -!define SHCNF_IDLIST 0 - -Function RefreshShellIcons - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -!define RefreshShellIcons "call RefreshShellIcons" -!else -!define RefreshShellIcons -!endif ; HAVE_SYSTEM_PLUGIN - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; parts from http://nsis.sourceforge.net/archive/viewpage.php?pageid=282 by Vytautas -;; Will add the registry entries to associate the given file extension with the -;; previously set (see CreateApplicationAssociation) appType. I.e. indicate to -;; open documents with this extension using the application specified by appType -;; registry entry. If the extension is currently associated with a different -;; appType, it will store the current association in the "prior_appType" key. - -!macro CreateFileAssociation extension extType extDef exeCmd defIcon - !define skipBackupLbl "skipBackup_${__LINE__}" - push $0 - - ; back up old value of extension (.ext) if it exists - ReadRegStr $0 HKCR "${extension}" "" ; read current value - StrCmp $0 "" "${skipBackupLbl}" ; nothing, then skip storing old value - StrCmp $0 "${extType}" "${skipBackupLbl}" ; only store if old is different than current - WriteRegStr HKCR "${extension}" "PreSD" "$0" ; actually store the old association - - "${skipBackupLbl}:" - ; Write File Associations - WriteRegStr HKCR "${extension}" "" "${extType}" - WriteRegStr HKCR "${extType}" "" "${extDef}" - WriteRegStr HKCR "${extType}\DefaultIcon" "" "${defIcon}" - WriteRegStr HKCR "${extType}\shell" "" "open" - WriteRegStr HKCR "${extType}\shell\open\command" "" '"${exeCmd}" "%1"' - - ; Force shell refresh (so icons updated as needed) - ${RefreshShellIcons} - - pop $0 - !undef skipBackupLbl -!macroend -!define CreateFileAssociation "!insertmacro CreateFileAssociation" - - -; check if a file extension is associated with us and if so delete it -!macro RemoveFileAssociation extension extType - push $0 - push $1 - - ReadRegStr $0 HKCR "${extension}" "" - StrCmp "$0" "${extType}" 0 Skip_Del_File_Assoc.${extension} - ReadRegStr $0 HKCR "${extension}" "PreSD" - StrCmp "$0" "" "DeleteFA.${extension}" 0 ; if "prior_value" is not empty - ReadRegStr $1 HKCR "$0" "" ; restore previous association - StrCmp "$1" "" DeleteFA.${extension} ; only if it is still valid (has something defined) - WriteRegStr HKCR "${extension}" "" $0 ; actually restore prior association - DeleteRegValue HKCR "${extension}" "PreSD" ; and remove stored value - DeleteRegKey HKCR "${extType}" ; remove the extension type we added - Goto Skip_Del_File_Assoc.${extension} - DeleteFA.${extension}: ; else delete file association key - DeleteRegKey HKCR "${extension}" ; actually remove file assoications - - Skip_Del_File_Assoc.${extension}: - pop $1 - pop $0 -!macroend -!define RemoveFileAssociation "!insertmacro RemoveFileAssociation" - - -!endif ; _FILEASSOC_NSH_ diff --git a/setup/SetupScript.nsi b/setup/SetupScript.nsi deleted file mode 100644 index 201888b9c4..0000000000 --- a/setup/SetupScript.nsi +++ /dev/null @@ -1,224 +0,0 @@ -!verbose 3 - -!define PRODUCT_NAME "SharpDevelop" -!define PRODUCT_VERSION "2.1 Preview" -!define PRODUCT_PUBLISHER "ic#code" -!define PRODUCT_WEB_SITE "http://www.icsharpcode.net/opensource/sd/" -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\SharpDevelop.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SharpDevelop2.1" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" - -!define MUI_WELCOMEFINISHPAGE_BITMAP "wizard-image.bmp" -!define MUI_UNWELCOMEFINISHPAGE_BITMAP "wizard-image.bmp" - -BrandingText "© 2000-2006 ic#code, http://www.icsharpcode.net/" -SetCompressor lzma -CRCCheck on - -; File Association defines -!include "FileAssociations.nsh" - -; MUI 1.67 compatible ------ -!include "MUI.nsh" - -; MUI Settings -!define MUI_ABORTWARNING -!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" -!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" - -; Welcome page -!insertmacro MUI_PAGE_WELCOME -; License page -!insertmacro MUI_PAGE_LICENSE "..\doc\license.txt" -; Directory page -!insertmacro MUI_PAGE_DIRECTORY -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES -; Finish page -!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\SharpDevelop.exe" -!define MUI_FINISHPAGE_RUN_TEXT "Run #develop" -!insertmacro MUI_PAGE_FINISH - -; Uninstaller pages -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES -!insertmacro MUI_UNPAGE_FINISH - -; Language files -!insertmacro MUI_LANGUAGE "English" - -; Reserve files -!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS - -; MUI end ------ - -Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "Setup.exe" -InstallDir "$PROGRAMFILES\SharpDevelop\2.1\" -ShowInstDetails show -ShowUnInstDetails show - -; .NET Framework check -; http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnnetdep/html/redistdeploy1_1.asp -; Section "Detecting that the .NET Framework 2.0 is installed" -Function .onInit - ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" Install - StrCmp $R0 "" 0 CheckPreviousVersion - MessageBox MB_OK "Microsoft .NET Framework 2.0 was not found on this system.$\r$\n$\r$\nUnable to continue this installation." - Abort - - CheckPreviousVersion: - ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" - StrCmp $R0 "" CheckOSVersion 0 - MessageBox MB_OK "An old version of SharpDevelop is installed on this computer, please uninstall first.$\r$\n$\r$\nUnable to continue this installation." - Abort - - CheckOSVersion: - Call IsSupportedWindowsVersion - Pop $R0 - StrCmp $R0 "False" NoAbort 0 - MessageBox MB_OK "The operating system you are using is not supported by SharpDevelop (95/98/ME/NT3.x/NT4.x)." - Abort - - NoAbort: -FunctionEnd - -Section "MainSection" SEC01 - SetOverwrite ifnewer - - ; any file that would go in the root - SetOutPath "$INSTDIR" - - - SetOutPath "$INSTDIR\AddIns" - File /r /x .svn ..\AddIns\*.* - - SetOutPath "$INSTDIR\bin" - File /r /x .svn ..\bin\*.* - - SetOutPath "$INSTDIR\data" - File /r /x .svn ..\data\*.* - - SetOutPath "$INSTDIR\doc" - File /r /x .svn ..\doc\*.* - - CreateDirectory "$SMPROGRAMS\SharpDevelop 2.1" - CreateShortCut "$SMPROGRAMS\SharpDevelop 2.1\SharpDevelop 2.1.lnk" "$INSTDIR\bin\SharpDevelop.exe" - CreateShortCut "$DESKTOP\SharpDevelop 2.1.lnk" "$INSTDIR\bin\SharpDevelop.exe" -SectionEnd - -Section -AdditionalIcons - WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" - CreateShortCut "$SMPROGRAMS\SharpDevelop 2.1\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" - CreateShortCut "$SMPROGRAMS\SharpDevelop 2.1\Uninstall.lnk" "$INSTDIR\uninst.exe" -SectionEnd - -Section -Post - WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\SharpDevelop.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\SharpDevelop.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" - - ; now finally call our post install tasks - SetOutPath "$INSTDIR\bin\setup" - ; return code goes to $0 -> don't fail setup when there are Help2 problems - ExecWait '"$INSTDIR\bin\setup\PostInstallTasks.bat"' $0 -SectionEnd - -Section Uninstall - Delete "$DESKTOP\SharpDevelop 2.1.lnk" - Delete "$SMPROGRAMS\SharpDevelop 2.1\*.*" - - ; first, remove all dependencies from the GAC etc - SetOutPath "$INSTDIR\bin\setup" - ExecWait '"$INSTDIR\bin\setup\PreUninstallTasks.bat"' $0 - ; set OutPath to somewhere else because the current working directory cannot be deleted! - SetOutPath "$DESKTOP" - - RMDir "$SMPROGRAMS\SharpDevelop 2.1" - RMDir /r "$INSTDIR" - - ; NOTE: this application configuration deletion is now deactivated post-1.0 releases - ; RMDir /r "$APPDATA\.ICSharpCode" - - DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" - DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" -SectionEnd - -; GetWindowsVersion, taken from NSIS help, modified for our purposes -Function IsSupportedWindowsVersion - - Push $R0 - Push $R1 - - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - - IfErrors 0 lbl_winnt - - ; we are not NT - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber - - StrCpy $R1 $R0 1 - StrCmp $R1 '4' 0 lbl_error - - StrCpy $R1 $R0 3 - - StrCmp $R1 '4.0' lbl_win32_95 - StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98 - - lbl_win32_95: - StrCpy $R0 'False' - Goto lbl_done - - lbl_win32_98: - StrCpy $R0 'False' - Goto lbl_done - - lbl_win32_ME: - StrCpy $R0 'False' - Goto lbl_done - - lbl_winnt: - - StrCpy $R1 $R0 1 - - StrCmp $R1 '3' lbl_winnt_x - StrCmp $R1 '4' lbl_winnt_x - - StrCpy $R1 $R0 3 - - StrCmp $R1 '5.0' lbl_winnt_2000 - StrCmp $R1 '5.1' lbl_winnt_XP - StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error - - lbl_winnt_x: - StrCpy $R0 'False' - Goto lbl_done - - lbl_winnt_2000: - Strcpy $R0 'True' - Goto lbl_done - - lbl_winnt_XP: - Strcpy $R0 'True' - Goto lbl_done - - lbl_winnt_2003: - Strcpy $R0 'True' - Goto lbl_done - - lbl_error: - Strcpy $R0 'False' - lbl_done: - - Pop $R1 - Exch $R0 - -FunctionEnd - diff --git a/setup/SharpDevelop.wxs b/setup/SharpDevelop.wxs deleted file mode 100644 index fbbde3bad3..0000000000 --- a/setup/SharpDevelop.wxs +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - - No - - - < &Back - &Next > - &Finish - - OK - Cancel - - Br&owse... - &Exit - &Ignore - &Install - &Remove - &Repair - &Reset - &Resume - &Retry - &Return - - &Yes - &No - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {&DlgFontBold8} - {&VerdanaBold13} - DlgFont8 - - - - - - - - - - 1 - - - 1 - - - - - - - - The installer will guide you through the steps required to install [ProductName] on your computer. - - - [BigFont]Welcome to the [ProductName] installation - - - - - - - - 1 - - - - AcceptLicense = "Yes" - AcceptLicense <> "Yes" - AcceptLicense = "Yes" - - - - 1 - - - - - - - - - - - - Please read the following license agreement carefully! - - - [TitleFont]End-User License Agreement - - - - Yes - No - - - - - 1 - - - - 1 - - - - 1 - - - - - - 1 - 1 - - - - To install in this folder, click "Next". To install to a different folder, enter it below or click "Browse". - - - - - - - - - - This is the folder where [ProductName] will be installed. - - - - [TitleFont]Select Installation Folder - - - - - - - - OutOfDiskSpace <> 1 - OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST) - OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D" - OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D" - (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F") - - - - 1 - - - - - - - - - - Click Install to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard. - - - - - The [Wizard] is ready to begin the [InstallMode] installation - - - [TitleFont]Ready to Install - - - - - - 1 - - - - - - Please wait while [ProductName] is installed. - - - - - Install [ProductName] - - - - - - - - - - - - - - Are you sure you want to cancel [ProductName] installation? - - - - 1 - - - 1 - - - - - - - - - 1 - - - 1 - 1 - - - - - - - 1 - - - 1 - - - - - - - - Browse to the destination folder - - - [TitleFont]Change current destination folder - - - - - - 1 - - - - - - - - [BigFont][ProductName] installation was interrupted - - - The installation was interrupted before [ProductName] could be installed. You need to restart the installer to try again. - - - Click the Finish button to exit. - - - - - - 1 - - - - - - - Click the Finish button to exit. - - - [BigFont]Completing the [ProductName] installation. - - - - - - 1 - - - - The highlighted volumes do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s). - - - - - Disk space required for the installation exceeds available disk space. - - - [TitleFont]Out of Disk Space - - - {120}{70}{70}{70}{70} - - - - - - 1 - - - 1 - 1 - - - - The highlighted volumes do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s). - - - - - Disk space required for the installation exceeds available disk space. - - - [TitleFont]Out of Disk Space - - - {120}{70}{70}{70}{70} - - - Alternatively, you may choose to disable the installer's rollback functionality. This allows the installer to restore your computer's original state should the installation be interrupted in any way. Click Yes if you wish to take the risk to disable rollback. - - - - - - 1 - - - - - - - [BigFont][ProductName] ended prematurely - - - [ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again. - - - Click the Finish button to exit the. - - - - - - TARGETDIR="" - - - - - - - - - - - - TARGETDIR="" - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/setup/buildSetup.bat b/setup/buildSetup.bat deleted file mode 100644 index db8af1ae04..0000000000 --- a/setup/buildSetup.bat +++ /dev/null @@ -1,3 +0,0 @@ -del "Setup.exe" -"%PROGRAMFILES%\NSIS\makensis" /V2 "SetupScript.nsi" -@IF %ERRORLEVEL% NEQ 0 PAUSE \ No newline at end of file diff --git a/setup/readme.txt b/setup/readme.txt deleted file mode 100644 index 43920982d9..0000000000 --- a/setup/readme.txt +++ /dev/null @@ -1,40 +0,0 @@ -The setup program is maintained by Christoph Wille, christophw@icsharpcode.net - -Information - -Setup uses NSIS 2.08 Release - http://nsis.sourceforge.net - - -CHANGELOG - -4/13/2005: -* Fixed installation in path with spaces. - -4/12/2005: - -* SetOutputPath -* Exclusion of directories - -10/07/2004: - -* Batch files replaced with WSH scripts - -9/13/2004: - -* bin\setup directory created, batch files added -* gacutil2 source code added -* setup changed to call post & pre batch files, disabled app data deletion - -6/23/2004: - -* http://abiword.pchasm.org/source/cvs/abiword-cvs/abi/src/pkg/win/setup/NSISv2/abi_util_fileassoc.nsh added -* abi_util_fileassoc.nsh modified (now named fileassoc.nsh) to allow icons per extension in CreateFileAssociation -* modified fileassoc.nsh to match file type registerer in Tools / Options -* Compressor set to lzma in Fidalgo.nsi - -2/18/2004: changes for .99 and NSIS 2.0 Release - -8/25/2003: added check to .onInit for installed previous version (protect us from - partially overwriting previous installations) - -8/23/2003: added check to .onInit for installed .NET 1.1 Framework diff --git a/setup/wizard-image.bmp b/setup/wizard-image.bmp deleted file mode 100644 index 150829f055fdcfe4ada8eb84fb5ebbb86553d471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154542 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