diff options
Diffstat (limited to 'NSIS/install.nsi')
-rw-r--r-- | NSIS/install.nsi | 422 |
1 files changed, 329 insertions, 93 deletions
diff --git a/NSIS/install.nsi b/NSIS/install.nsi index 5e93e99..eebf812 100644 --- a/NSIS/install.nsi +++ b/NSIS/install.nsi @@ -1,57 +1,98 @@ ; 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 installation script requires NSIS (Nullsoft Scriptable Install System) +; version 3.x http://nsis.sourceforge.net/Main_Page +; +; This script is provided as is with no warranties. ; -; 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. +; Copyright (C) 2015 Nick Østergaard +; Copyright (C) 2015 Brian Sidebotham <brian.sidebotham@gmail.com> +; Copyright (C) 2016 Bevan Weiss <bevan.weiss@gmail.com> +; +; 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 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 +; This script expects the install.ico, uninstall.ico, language and license +; files to be in the same directory as this script + +!include "winmessages.nsh" ; 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 LIBRARIES_WEB_SITE "https://kicad.github.io/" !define KICAD_MAIN_SITE "www.kicad-pcb.org/" -!define COMPANY_NAME "" +!define COMPANY_NAME "KiCad" !define TRADE_MARKS "" !define COPYRIGHT "Kicad Developers Team" !define COMMENTS "" -!define HELP_WEB_SITE "http://groups.yahoo.com/group/kicad-users/" +!define KICAD_USER_FORUM "https://forum.kicad.info/" !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" +!define ENV_HKLM 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' + +!define gflag ;Needed to use ifdef and such +;Define on command line //DPRODUCT_VERSION=42 +!ifndef PRODUCT_VERSION + !define PRODUCT_VERSION "4.0.7" +!endif + +!ifndef OPTION_STRING + !define OPTION_STRING "i686" +!endif + +;Properly display all languages (Installer will not work on Windows 95, 98 or ME!) +Unicode true ;Comment out the following SetCompressor command while testing this script ;SetCompressor /final /solid lzma CRCCheck force -XPStyle on +;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" +!ifndef OUTFILE + !define OUTFILE "kicad-${PRODUCT_VERSION}-${OPTION_STRING}.exe" +!endif +OutFile ${OUTFILE} + +; Request that we are executed as admin rights so we can install into +; PROGRAMFILES without ending up in the virtual store +RequestExecutionLevel admin + +!if ${ARCH} == 'x86_64' + InstallDir "$PROGRAMFILES64\KiCad" +!else + InstallDir "$PROGRAMFILES\KiCad" +!endif + +ShowInstDetails show +ShowUnInstDetails show +BrandingText "KiCad installer for Windows" + +; MUI 2 compatible ------ +!include "MUI2.nsh" +!include "${NSISDIR}\Examples\System\System.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "install.ico" !define MUI_UNICON "uninstall.ico" +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "kicad-header.bmp" ; optional +!define MUI_WELCOMEFINISHPAGE_BITMAP "kicad-welcome.bmp" ; Language Selection Dialog Settings !define MUI_LANGDLL_REGISTRY_ROOT "${UNINST_ROOT}" @@ -61,15 +102,17 @@ ShowUnInstDetails hide ; Installer pages !define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit !define MUI_CUSTOMFUNCTION_UNGUIINIT un.myGuiInit +!define MUI_WELCOMEPAGE_TEXT $(WELCOME_PAGE_TEXT) +!define MUI_WELCOMEPAGE_TITLE_3LINES !insertmacro MUI_PAGE_WELCOME -!insertmacro MUI_PAGE_LICENSE $(MUILicense) +;!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_TEXT $(WINGS3D_PROMPT) !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED -!define MUI_PAGE_CUSTOMFUNCTION_PRE ModifyFinishPage +!define MUI_PAGE_CUSTOMFUNCTION_SHOW ModifyFinishPage !insertmacro MUI_PAGE_FINISH ; Uninstaller pages @@ -79,33 +122,69 @@ ShowUnInstDetails hide ; - 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" +;!insertmacro MUI_LANGUAGE "German" +;!insertmacro MUI_LANGUAGE "Italian" +;!insertmacro MUI_LANGUAGE "Spanish" +;!insertmacro MUI_LANGUAGE "Greek" !include "English.nsh" -!include "French.nsh" -!include "Dutch.nsh" -!include "Italian.nsh" -!include "Japanese.nsh" -!include "Polish.nsh" -!include "Portuguese.nsh" -!include "Russian.nsh" +;!include "German.nsh" +;!include "Italian.nsh" +;!include "Spanish.nsh" +;!include "Greek.nsh" + +VIProductVersion "0.0.0.0" ; Dummy version, because this can only be X.X.X.X +VIAddVersionKey "ProductName" "${COMPANY_NAME}" +VIAddVersionKey "CompanyName" "${COMPANY_NAME}" +VIAddVersionKey "LegalCopyright" "${COMPANY_NAME}" +VIAddVersionKey "FileDescription" "Installer for the KiCad EDA Suite" +VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}" +VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}" + +;-------------------------------- +;Reserve Files + + ;If you are using solid compression, files that are required before + ;the actual installation should be stored first in the data block, + ;because this will make your installer start faster. + + !insertmacro MUI_RESERVEFILE_LANGDLL ; 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 + ; Request that we get elevated rights to install so that we don't end up in + ; the virtual store + ClearErrors + UserInfo::GetName + IfErrors Win9x + Pop $0 + UserInfo::GetAccountType + Pop $1 + UserInfo::GetOriginalAccountType + Pop $2 + StrCmp $1 "Admin" 0 AdminQuit + Goto LangDisplay + + AdminQuit: + MessageBox MB_OK $(ERROR_ADMIN_REQ) + Quit + + LangDisplay: + ReserveFile "install.ico" + ReserveFile "uninstall.ico" + ReserveFile "${NSISDIR}\Plugins\x86-unicode\LangDLL.dll" + ReserveFile "${NSISDIR}\Plugins\x86-unicode\System.dll" + ;!insertmacro MUI_LANGDLL_DISPLAY + Goto done + + Win9x: + MessageBox MB_OK $(ERROR_WIN9X) + Quit + + done: + Call EnableLiteMode + FunctionEnd Function myGuiInit @@ -114,12 +193,24 @@ Function myGuiInit 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!! + ; resize the Text control, otherwise we get clipping on the top and bottom + ; Create RECT struct + System::Call "*${stRECT} .r1" + ; Find Window info for the window we're displaying + System::Call "User32::GetWindowRect(i, i) i ($mui.FinishPage.ShowReadme, r1) .r2" + ; Get left/top/right/bottom + System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)" + System::Free $1 + ; calculate the width, we'll keep this the same + IntOp $6 $4 - $2 + ; then calculate the height, and we'll make this 4 times as high + IntOp $7 $5 - $3 + IntOp $7 6 * $7 + ; then we finally update the control size.. we don't want to move it, or change its z-order however + System::Call "User32::SetWindowPos(i $mui.FinishPage.ShowReadme, i 0, i 0, i 0, i $6, i $7, i ${SWP_NOMOVE} | ${SWP_NOZORDER})" FunctionEnd -Section $(TITLE_SEC01) SEC01 +Section $(TITLE_SEC_MAIN) SEC01 SectionIn RO SetOverwrite try SetOutPath "$INSTDIR" @@ -130,50 +221,118 @@ Section $(TITLE_SEC01) SEC01 File /nonfatal /r "..\share\kicad\template\*" SetOutPath "$INSTDIR\bin" File /r "..\bin\*" + SetOutPath "$INSTDIR\lib" + File /r "..\lib\*" SetOutPath "$INSTDIR\share\kicad\internat" - File /r "..\share\kicad\internat\*" + File /nonfatal /r "..\share\kicad\internat\*" + SetOutPath "$INSTDIR\ssl\certs" + File "..\ssl\certs\ca-bundle.crt" SectionEnd -Section $(TITLE_SEC02) SEC02 +Section $(TITLE_SEC_SCHLIB) SEC02 SetOverwrite try - SetOutPath "$INSTDIR\share\library" - File /nonfatal /r "..\share\library\*" - SetOutPath "$INSTDIR\share\modules" - File /nonfatal /r "..\share\modules\*" + SetOutPath "$INSTDIR\share\kicad\library" + File /nonfatal /r "..\share\kicad\library\*" SectionEnd -Section $(TITLE_SEC03) SEC03 +Section $(TITLE_SEC_FPLIB) 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\*" + SetOutPath "$INSTDIR\share\kicad\modules" + File /nonfatal /r "..\share\kicad\modules\*" SectionEnd -Section $(TITLE_SEC04) SEC04 +Section $(TITLE_SEC_FPWIZ) SEC04 SetOverwrite try - SetOutPath "$INSTDIR\share\doc\kicad\help" - File /nonfatal /r "..\share\doc\kicad\help\*" + SetOutPath "$INSTDIR\share\kicad\scripting\kicad_pyshell" + File /nonfatal /r "..\share\kicad\scripting\kicad_pyshell\*" + SetOutPath "$INSTDIR\share\kicad\scripting\plugins" + File /nonfatal /r "..\share\kicad\scripting\plugins\*" +SectionEnd + +;Section $(TITLE_SEC_DEMOS) SEC05 +; 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 + +;SectionGroup $(TITLE_SEC_DOCS) SEC06 + Section $(LANGUAGE_NAME_EN) SEC06_EN + SetOverwrite try + SetOutPath "$INSTDIR\share\doc\kicad\help\en" + File /nonfatal /r "..\share\doc\kicad\help\en\*" + SectionEnd +; Section $(LANGUAGE_NAME_DE) SEC06_DE +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\de" +; File /nonfatal /r "..\share\doc\kicad\help\de\*" +; SectionEnd +; Section $(LANGUAGE_NAME_ES) SEC06_ES +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\es" +; File /nonfatal /r "..\share\doc\kicad\help\es\*" +; SectionEnd +; Section $(LANGUAGE_NAME_FR) SEC06_FR +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\fr" +; File /nonfatal /r "..\share\doc\kicad\help\fr\*" +; SectionEnd +; Section $(LANGUAGE_NAME_IT) SEC06_IT +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\it" +; File /nonfatal /r "..\share\doc\kicad\help\it\*" +; SectionEnd +; Section $(LANGUAGE_NAME_JA) SEC06_JA +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\ja" +; File /nonfatal /r "..\share\doc\kicad\help\ja\*" +; SectionEnd +; Section $(LANGUAGE_NAME_NL) SEC06_NL +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\nl" +; File /nonfatal /r "..\share\doc\kicad\help\nl\*" +; SectionEnd +; Section $(LANGUAGE_NAME_PL) SEC06_PL +; SetOverwrite try +; SetOutPath "$INSTDIR\share\doc\kicad\help\pl" +; File /nonfatal /r "..\share\doc\kicad\help\pl\*" +; SectionEnd +;SectionGroupEnd + +Section $(TITLE_SEC_ENV) SEC07 + WriteRegExpandStr ${ENV_HKLM} KICAD_PTEMPLATES "$INSTDIR\share\kicad\template" + WriteRegExpandStr ${ENV_HKLM} KISYS3DMOD "$INSTDIR\share\kicad\modules\packages3d" + WriteRegExpandStr ${ENV_HKLM} KISYSMOD "$INSTDIR\share\kicad\modules" + WriteRegExpandStr ${ENV_HKLM} KICAD_SYMBOL_DIR "$INSTDIR\share\kicad\library" + + WriteRegDWORD ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "EnvInstalled" "1" + + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 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\UserForum.url" "InternetShortcut" "URL" "${KICAD_USER_FORUM}" 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\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\KiCad User Forum.lnk" "$INSTDIR\UserForum.url" + CreateShortCut "$SMPROGRAMS\KiCad\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 "$SMPROGRAMS\KiCad\Eeschema.lnk" "$INSTDIR\bin\eeschema.exe" + CreateShortCut "$SMPROGRAMS\KiCad\Pcbnew.lnk" "$INSTDIR\bin\pcbnew.exe" + CreateShortCut "$SMPROGRAMS\KiCad\Gerbview.lnk" "$INSTDIR\bin\gerbview.exe" + CreateShortCut "$SMPROGRAMS\KiCad\Bitmap2component.lnk" "$INSTDIR\bin\bitmap2component.exe" + CreateShortCut "$SMPROGRAMS\KiCad\PCB calculator.lnk" "$INSTDIR\bin\pcb_calculator.exe" + CreateShortCut "$SMPROGRAMS\KiCad\Pagelayout editor.lnk" "$INSTDIR\bin\pl_editor.exe" CreateShortCut "$DESKTOP\KiCad.lnk" "$INSTDIR\bin\kicad.exe" SectionEnd @@ -187,7 +346,7 @@ Section -CreateAddRemoveEntry 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}" "HelpLink" "${KICAD_USER_FORUM}" WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${KICAD_MAIN_SITE}" WriteRegStr ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR" @@ -195,10 +354,21 @@ Section -CreateAddRemoveEntry 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_DESCRIPTION_TEXT ${SEC01} $(DESC_SEC_MAIN) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_SEC_SCHLIB) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(DESC_SEC_FPLIB) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(DESC_SEC_FPWIZ) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(DESC_SEC_DEMOS) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(DESC_SEC_DOCS) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC06_EN} $(DESC_SEC_DOCS_EN) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_DE} $(DESC_SEC_DOCS_DE) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_ES} $(DESC_SEC_DOCS_ES) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_FR} $(DESC_SEC_DOCS_FR) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_IT} $(DESC_SEC_DOCS_IT) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_JA} $(DESC_SEC_DOCS_JA) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_NL} $(DESC_SEC_DOCS_NL) + ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC06_PL} $(DESC_SEC_DOCS_PL) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(DESC_SEC_ENV) !insertmacro MUI_FUNCTION_DESCRIPTION_END Function un.onInit @@ -223,17 +393,23 @@ Section Uninstall ;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\KiCad Libraries.lnk" + Delete "$SMPROGRAMS\KiCad\KiCad Alternate Download.lnk" + Delete "$SMPROGRAMS\KiCad\KiCad Devel Group.lnk" + Delete "$SMPROGRAMS\KiCad\KiCad User Group.lnk" Delete "$SMPROGRAMS\KiCad\Uninstall.lnk" Delete "$SMPROGRAMS\KiCad\KiCad.lnk" Delete "$SMPROGRAMS\KiCad\Wings3D.lnk" + Delete "$SMPROGRAMS\KiCad\Eeschema.lnk" + Delete "$SMPROGRAMS\KiCad\Pcbnew.lnk" + Delete "$SMPROGRAMS\KiCad\Gerbview.lnk" + Delete "$SMPROGRAMS\KiCad\Bitmap2component.lnk" + Delete "$SMPROGRAMS\KiCad\PCB calculator.lnk" + Delete "$SMPROGRAMS\KiCad\Pagelayout editor.lnk" Delete "$DESKTOP\KiCad.lnk" Delete "$INSTDIR\Wings3D.url" Delete "$INSTDIR\HomePage.url" - Delete "$INSTDIR\UserGroup.url" + Delete "$INSTDIR\UserForum.url" Delete "$INSTDIR\AltDownloadSite.url" Delete "$INSTDIR\DevelGroup.url" Delete "$INSTDIR\LibrariesGroup.url" @@ -241,6 +417,7 @@ Section Uninstall ;remove all program files now RMDir /r "$INSTDIR\bin" + RMDir /r "$INSTDIR\lib" RMDir /r "$INSTDIR\library" RMDir /r "$INSTDIR\modules" RMDir /r "$INSTDIR\template" @@ -252,15 +429,34 @@ Section Uninstall 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\kicad\demos" + ;RMDir /r "$INSTDIR\share\doc\kicad\tutorials" RMDir /r "$INSTDIR\share\doc\kicad\help" RMDir /r "$INSTDIR\wings3d" + RMDir /r "$INSTDIR\share\doc\kicad" + RMDir /r "$INSTDIR\share\doc" + RMDir /r "$INSTDIR\share" + RMDir /r "$INSTDIR\ssl\certs" + RMDir /r "$INSTDIR\ssl" ;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" + ;remove environment only if it was "installed" last + ClearErrors + ReadRegDWORD $0 ${UNINST_ROOT} "${PRODUCT_UNINST_KEY}" "EnvInstalled" + IfErrors FinishUninstall 0 + + IntCmp $0 1 0 FinishUninstall FinishUninstall + + DeleteRegValue ${ENV_HKLM} KICAD_PTEMPLATES + DeleteRegValue ${ENV_HKLM} KISYS3DMOD + DeleteRegValue ${ENV_HKLM} KISYSMOD + DeleteRegValue ${ENV_HKLM} KICAD_SYMBOL_DIR + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + + FinishUninstall: ;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. @@ -270,16 +466,6 @@ Section Uninstall 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 @@ -302,3 +488,53 @@ Function CheckAlreadyInstalled MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(ALREADY_INSTALLED) /SD IDOK IDOK +2 Abort FunctionEnd + +!macro CompileTimeIfFileExist path define + !tempfile tmpinc + !system 'IF EXIST "${path}" echo !define ${define} > "${tmpinc}"' + !include "${tmpinc}" + !delfile "${tmpinc}" + !undef tmpinc +!macroend + +Function EnableLiteMode + ; TODO: Add override string for lite mode + !insertmacro CompileTimeIfFileExist "..\share\kicad\library" ADD_LIBS + !ifndef ADD_LIBS + !insertmacro SetSectionFlag ${SEC02} ${SF_RO} + !insertmacro UnselectSection ${SEC02} + !endif + + !insertmacro CompileTimeIfFileExist "..\share\kicad\modules" ADD_MODULES + !ifndef ADD_MODULES + !insertmacro SetSectionFlag ${SEC03} ${SF_RO} + !insertmacro UnselectSection ${SEC03} + !endif + + !insertmacro CompileTimeIfFileExist "..\share\doc\kicad\help" ADD_HELP + !ifndef ADD_HELP + ;!insertmacro SetSectionFlag ${SEC06} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06} + + !insertmacro SetSectionFlag ${SEC06_EN} ${SF_RO} + !insertmacro UnselectSection ${SEC06_EN} + + ;!insertmacro SetSectionFlag ${SEC06_DE} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_DE} + ;!insertmacro SetSectionFlag ${SEC06_ES} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_ES} + ;!insertmacro SetSectionFlag ${SEC06_FR} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_FR} + ;!insertmacro SetSectionFlag ${SEC06_IT} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_IT} + ;!insertmacro SetSectionFlag ${SEC06_JA} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_JA} + ;!insertmacro SetSectionFlag ${SEC06_NL} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_NL} + ;!insertmacro SetSectionFlag ${SEC06_PL} ${SF_RO} + ;!insertmacro UnselectSection ${SEC06_PL} + !endif + + ; Make the envvar install not be default + !insertmacro UnselectSection ${SEC07} +FunctionEnd |