diff options
Diffstat (limited to 'packaging/windows/nsis/install.nsi')
-rw-r--r-- | packaging/windows/nsis/install.nsi | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/packaging/windows/nsis/install.nsi b/packaging/windows/nsis/install.nsi new file mode 100644 index 0000000..5e93e99 --- /dev/null +++ b/packaging/windows/nsis/install.nsi @@ -0,0 +1,304 @@ +; Installation script for KiCad generated by Alastair Hoyle +; +; This installation script requires NSIS (Nullsoft Scriptable Install System) version 2.18 http://nsis.sourceforge.net/Main_Page +; This script was created with HM NIS Edit version 2.0.3 http://hmne.sourceforge.net/ +; +; This script is provided as is with no warranties and has only been tested on Windows XP. +; Copyright (C) 2006 Alastair Hoyle <ahoyle@hoylesolutions.co.uk> +; This program is free software; you can redistribute it and/or modify it under the terms of the +; GNU General Public License as published by the Free Software Foundation. This program is distributed +; in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +; +; This script should be in a subdirectory of the full build directory (Kicad/NSIS by default) +; When the build is updated the product and installer versions should be updated before recompiling the installation file +; +; This script expects the install.ico, uninstall.ico, language and license files to be in the same directory as this script + +; General Product Description Definitions +!define PRODUCT_NAME "KiCad" +!define PRODUCT_VERSION "2014.03.05" +!define ALT_DOWNLOAD_WEB_SITE "http://iut-tice.ujf-grenoble.fr/kicad/" +!define LIBRARIES_WEB_SITE "https://github.com/KiCad/" +!define KICAD_MAIN_SITE "www.kicad-pcb.org/" +!define COMPANY_NAME "" +!define TRADE_MARKS "" +!define COPYRIGHT "Kicad Developers Team" +!define COMMENTS "" +!define HELP_WEB_SITE "http://groups.yahoo.com/group/kicad-users/" +!define DEVEL_WEB_SITE "https://launchpad.net/kicad/" +!define WINGS3D_WEB_SITE "http://www.wings3d.com" + +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define UNINST_ROOT "HKLM" + + +;Comment out the following SetCompressor command while testing this script +;SetCompressor /final /solid lzma + +CRCCheck force +XPStyle on +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "${PRODUCT_NAME}_stable-${PRODUCT_VERSION}-BZR4xxx_Win_full_version.exe" +;InstallDir "$PROGRAMFILES\KiCad" +InstallDir "C:\KiCad" +ShowInstDetails hide +ShowUnInstDetails hide + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "install.ico" +!define MUI_UNICON "uninstall.ico" + +; Language Selection Dialog Settings +!define MUI_LANGDLL_REGISTRY_ROOT "${UNINST_ROOT}" +!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" +!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" + +; Installer pages +!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit +!define MUI_CUSTOMFUNCTION_UNGUIINIT un.myGuiInit +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE $(MUILicense) +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!define MUI_FINISHPAGE_SHOWREADME ${WINGS3D_WEB_SITE} +!define MUI_FINISHPAGE_SHOWREADME_TEXT "text" +!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED +!define MUI_PAGE_CUSTOMFUNCTION_PRE ModifyFinishPage +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +; - To add another language; add an insert macro line here and include a language file as below +; - This must be after all page macros have been inserted +!insertmacro MUI_LANGUAGE "English" ;first language is the default language +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "Italian" +!insertmacro MUI_LANGUAGE "Polish" +!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "Dutch" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Japanese" + +!include "English.nsh" +!include "French.nsh" +!include "Dutch.nsh" +!include "Italian.nsh" +!include "Japanese.nsh" +!include "Polish.nsh" +!include "Portuguese.nsh" +!include "Russian.nsh" + +; MUI end ------ + +Function .onInit + ReserveFile "install.ico" + ReserveFile "uninstall.ico" + ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll" + ReserveFile "${NSISDIR}\Plugins\LangDLL.dll" + ReserveFile "${NSISDIR}\Plugins\System.dll" + ReserveFile "${NSISDIR}\Contrib\Modern UI\ioSpecial.ini" + !insertmacro MUI_LANGDLL_DISPLAY +FunctionEnd + +Function myGuiInit + Call PreventMultiInstances + Call CheckAlreadyInstalled +FunctionEnd + +Function ModifyFinishPage + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Text" $(WINGS3D_PROMPT) + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" 168 ;make more space for prompt + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "CancelShow" "0" ;hide cancel button - already installed!! +FunctionEnd + +Section $(TITLE_SEC01) SEC01 + SectionIn RO + SetOverwrite try + SetOutPath "$INSTDIR" + File /nonfatal "..\AUTHORS.txt" + File /nonfatal "..\COPYRIGHT.txt" + File /nonfatal "..\license_for_documentation.txt" + SetOutPath "$INSTDIR\share\kicad\template" + File /nonfatal /r "..\share\kicad\template\*" + SetOutPath "$INSTDIR\bin" + File /r "..\bin\*" + SetOutPath "$INSTDIR\share\kicad\internat" + File /r "..\share\kicad\internat\*" +SectionEnd + +Section $(TITLE_SEC02) SEC02 + SetOverwrite try + SetOutPath "$INSTDIR\share\library" + File /nonfatal /r "..\share\library\*" + SetOutPath "$INSTDIR\share\modules" + File /nonfatal /r "..\share\modules\*" +SectionEnd + +Section $(TITLE_SEC03) SEC03 + SetOverwrite try + SetOutPath "$INSTDIR\share\kicad\demos" + File /nonfatal /r "..\share\kicad\demos\*" + SetOutPath "$INSTDIR\share\doc\kicad\tutorials" + File /nonfatal /r "..\share\doc\kicad\tutorials\*" +SectionEnd + +Section $(TITLE_SEC04) SEC04 + SetOverwrite try + SetOutPath "$INSTDIR\share\doc\kicad\help" + File /nonfatal /r "..\share\doc\kicad\help\*" +SectionEnd + +Section -CreateShortcuts + SetOutPath $INSTDIR + WriteIniStr "$INSTDIR\HomePage.url" "InternetShortcut" "URL" "${KICAD_MAIN_SITE}" + WriteIniStr "$INSTDIR\AltDownloadSite.url" "InternetShortcut" "URL" "${ALT_DOWNLOAD_WEB_SITE}" + WriteIniStr "$INSTDIR\UserGroup.url" "InternetShortcut" "URL" "${HELP_WEB_SITE}" + WriteIniStr "$INSTDIR\DevelGroup.url" "InternetShortcut" "URL" "${DEVEL_WEB_SITE}" + WriteIniStr "$INSTDIR\LibrariesGroup.url" "InternetShortcut" "URL" "${LIBRARIES_WEB_SITE}" + WriteIniStr "$INSTDIR\Wings3D.url" "InternetShortcut" "URL" "${WINGS3D_WEB_SITE}" + SetShellVarContext all + CreateDirectory "$SMPROGRAMS\KiCad" + CreateShortCut "$SMPROGRAMS\KiCad\Home Page.lnk" "$INSTDIR\HomePage.url" + CreateShortCut "$SMPROGRAMS\KiCad\Kicad Alternate Download.lnk" "$INSTDIR\AltDownloadSite.url" + CreateShortCut "$SMPROGRAMS\KiCad\Kicad Libraries.lnk" "$INSTDIR\LibrariesGroup.url" + CreateShortCut "$SMPROGRAMS\KiCad\Wings3D.lnk" "$INSTDIR\Wings3D.url" + CreateShortCut "$SMPROGRAMS\KiCad\User Group.lnk" "$INSTDIR\UserGroup.url" + CreateShortCut "$SMPROGRAMS\KiCad\Devel Group.lnk" "$INSTDIR\DevelGroup.url" + CreateShortCut "$SMPROGRAMS\KiCad\Uninstall.lnk" "$INSTDIR\uninstaller.exe" + CreateShortCut "$SMPROGRAMS\KiCad\KiCad.lnk" "$INSTDIR\bin\kicad.exe" + CreateShortCut "$DESKTOP\KiCad.lnk" "$INSTDIR\bin\kicad.exe" +SectionEnd + +Section -CreateAddRemoveEntry + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "Publisher" "${COMPANY_NAME}" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninstaller.exe" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${KICAD_MAIN_SITE}" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\kicad.exe" + WriteRegDWORD ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "NoModify" "1" + WriteRegDWORD ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "NoRepair" "1" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "Comments" "${COMMENTS}" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "HelpLink" "${HELP_WEB_SITE}" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${KICAD_MAIN_SITE}" + WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR" + + WriteUninstaller "$INSTDIR\uninstaller.exe" +SectionEnd + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(DESC_SEC01) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_SEC02) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(DESC_SEC03) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(DESC_SEC04) +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +Function un.onInit + !insertmacro MUI_UNGETLANGUAGE +FunctionEnd + +Function un.myGuiInit + Call un.PreventMultiInstances + MessageBox MB_ICONEXCLAMATION|MB_YESNO|MB_DEFBUTTON2 $(UNINST_PROMPT) /SD IDYES IDYES +2 + Abort +FunctionEnd + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK $(UNINST_SUCCESS) /SD IDOK +FunctionEnd + +Section Uninstall + ;delete uninstaller first + Delete "$INSTDIR\uninstaller.exe" + + ;remove start menu shortcuts and web page links + SetShellVarContext all + Delete "$SMPROGRAMS\KiCad\Home Page.lnk" + Delete "$SMPROGRAMS\KiCad\Kicad Libraries.lnk" + Delete "$SMPROGRAMS\KiCad\Kicad Alternate Download.lnk" + Delete "$SMPROGRAMS\KiCad\Devel Group.lnk" + Delete "$SMPROGRAMS\KiCad\User Group.lnk" + Delete "$SMPROGRAMS\KiCad\Uninstall.lnk" + Delete "$SMPROGRAMS\KiCad\KiCad.lnk" + Delete "$SMPROGRAMS\KiCad\Wings3D.lnk" + Delete "$DESKTOP\KiCad.lnk" + Delete "$INSTDIR\Wings3D.url" + Delete "$INSTDIR\HomePage.url" + Delete "$INSTDIR\UserGroup.url" + Delete "$INSTDIR\AltDownloadSite.url" + Delete "$INSTDIR\DevelGroup.url" + Delete "$INSTDIR\LibrariesGroup.url" + RMDir "$SMPROGRAMS\KiCad" + + ;remove all program files now + RMDir /r "$INSTDIR\bin" + RMDir /r "$INSTDIR\library" + RMDir /r "$INSTDIR\modules" + RMDir /r "$INSTDIR\template" + RMDir /r "$INSTDIR\internat" + RMDir /r "$INSTDIR\demos" + RMDir /r "$INSTDIR\tutorials" + RMDir /r "$INSTDIR\help" + RMDir /r "$INSTDIR\share\library" + RMDir /r "$INSTDIR\share\modules" + RMDir /r "$INSTDIR\share\kicad\template" + RMDir /r "$INSTDIR\share\kicad\internat" + RMDir /r "$INSTDIR\share\kicad\demos" + RMDir /r "$INSTDIR\share\doc\kicad\tutorials" + RMDir /r "$INSTDIR\share\doc\kicad\help" + RMDir /r "$INSTDIR\wings3d" + ;don't remove $INSTDIR recursively just in case the user has installed it in c:\ or + ;c:\program files as this would attempt to delete a lot more than just this package + Delete "$INSTDIR\*.txt" + RMDir "$INSTDIR" + + ;Note - application registry keys are stored in the users individual registry hive (HKCU\Software\kicad". + ;It might be possible to remove these keys as well but it would require a lot of testing of permissions + ;and access to other people's registry entries. So for now we will leave the application registry keys. + + ;remove installation registary keys + DeleteRegKey ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" + SetAutoClose true +SectionEnd + +;Setup.exe file version information + VIProductVersion "${PRODUCT_VERSION}.01" ;must be in x.x.x.x format - product version plus last digit for installer version number + VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${PRODUCT_NAME}" + VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "${COMMENTS}" + VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "${COMPANY_NAME}" + VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "${TRADE_MARKS}" + VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© ${COPYRIGHT}" + VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${PRODUCT_NAME} Installer" + VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}" + +Function PreventMultiInstances + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' + Pop $R0 + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION $(INSTALLER_RUNNING) /SD IDOK + Abort +FunctionEnd + +Function un.PreventMultiInstances + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' + Pop $R0 + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION $(UNINSTALLER_RUNNING) /SD IDOK + Abort +FunctionEnd + +Function CheckAlreadyInstalled + ReadRegStr $R0 ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "DisplayName" + StrCmp $R0 "" +3 + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(ALREADY_INSTALLED) /SD IDOK IDOK +2 + Abort +FunctionEnd |