--- embedaddon/smartmontools/os_win32/installer.nsi 2012/02/21 16:32:16 1.1 +++ embedaddon/smartmontools/os_win32/installer.nsi 2013/07/22 01:17:36 1.1.1.3 @@ -3,7 +3,7 @@ ; ; Home page of code is: http://smartmontools.sourceforge.net ; -; Copyright (C) 2006-11 Christian Franke +; Copyright (C) 2006-13 Christian Franke ; ; 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 @@ -13,13 +13,14 @@ ; You should have received a copy of the GNU General Public License ; (for example COPYING); If not, see . ; -; $Id: installer.nsi,v 1.1 2012/02/21 16:32:16 misho Exp $ +; $Id: installer.nsi,v 1.1.1.3 2013/07/22 01:17:36 misho Exp $ ; ;-------------------------------------------------------------------- ; Command line arguments: -; makensis -DINPDIR= -DOUTFILE= -DVERSTR= installer.nsi +; makensis -DINPDIR= -DINPDIR64= \ +; -DOUTFILE= -DVERSTR= installer.nsi !ifndef INPDIR !define INPDIR "." @@ -40,12 +41,18 @@ SetCompressor /solid lzma XPStyle on InstallColors /windows -InstallDir "$PROGRAMFILES\smartmontools" -InstallDirRegKey HKLM "Software\smartmontools" "Install_Dir" +; Set in .onInit +;InstallDir "$PROGRAMFILES\smartmontools" +;InstallDirRegKey HKLM "Software\smartmontools" "Install_Dir" Var EDITOR -Var UBCDDIR +!ifdef INPDIR64 + Var X64 + Var INSTDIR32 + Var INSTDIR64 +!endif + LicenseData "${INPDIR}\doc\COPYING.txt" !include "FileFunc.nsh" @@ -61,12 +68,11 @@ RequestExecutionLevel admin Page license Page components -Page directory SkipProgPath "" "" -PageEx directory - PageCallbacks SkipUBCDPath "" "" - DirText "Setup will install the UBCD4Win plugin in the following folder." - DirVar $UBCDDIR -PageExEnd +!ifdef INPDIR64 + Page directory CheckX64 +!else + Page directory +!endif Page instfiles UninstPage uninstConfirm @@ -75,20 +81,41 @@ UninstPage instfiles InstType "Full" InstType "Extract files only" InstType "Drive menu" -InstType "UBCD4Win plugin" ;-------------------------------------------------------------------- ; Sections +!ifdef INPDIR64 + Section "64-bit version" X64_SECTION + ; Handled in Function CheckX64 + SectionEnd +!endif + SectionGroup "!Program files" + !macro FileExe path option + !ifdef INPDIR64 + ; Use dummy SetOutPath to control archive location of executables + StrCmp $X64 "" +5 + Goto +2 + SetOutPath "$INSTDIR\bin64" + File ${option} '${INPDIR64}\${path}' + GoTo +4 + Goto +2 + SetOutPath "$INSTDIR\bin" + File ${option} '${INPDIR}\${path}' + !else + File ${option} '${INPDIR}\${path}' + !endif + !macroend + Section "smartctl" SMARTCTL_SECTION SectionIn 1 2 SetOutPath "$INSTDIR\bin" - File "${INPDIR}\bin\smartctl.exe" + !insertmacro FileExe "bin\smartctl.exe" "" SectionEnd @@ -105,18 +132,18 @@ SectionGroup "!Program files" StrCmp $0 "" nosrv ExecWait "net stop smartd" $1 nosrv: - File "${INPDIR}\bin\smartd.exe" + !insertmacro FileExe "bin\smartd.exe" "" IfFileExists "$INSTDIR\bin\smartd.conf" 0 +2 - MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Replace existing configuration file$\n$INSTDIR\bin\smartd.conf ?" IDYES 0 IDNO +2 + MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Replace existing configuration file$\n$INSTDIR\bin\smartd.conf ?" /SD IDNO IDYES 0 IDNO +2 File "${INPDIR}\doc\smartd.conf" - IfFileExists "$WINDIR\system32\cmd.exe" 0 +2 - File /nonfatal "${INPDIR}\bin\syslogevt.exe" + File "${INPDIR}\bin\smartd_warning.cmd" + !insertmacro FileExe "bin\wtssendmsg.exe" "" ; Restart service ? StrCmp $1 "0" 0 +3 - MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Restart smartd service ?" IDYES 0 IDNO +2 + MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Restart smartd service ?" /SD IDNO IDYES 0 IDNO +2 ExecWait "net start smartd" SectionEnd @@ -126,7 +153,7 @@ SectionGroup "!Program files" SectionIn 1 2 SetOutPath "$INSTDIR\bin" - File "${INPDIR}\bin\smartctl-nc.exe" + !insertmacro FileExe "bin\smartctl-nc.exe" "" SectionEnd @@ -148,14 +175,22 @@ Section "!Documentation" DOC_SECTION SetOutPath "$INSTDIR\doc" File "${INPDIR}\doc\AUTHORS.txt" - File "${INPDIR}\doc\CHANGELOG.txt" + File "${INPDIR}\doc\ChangeLog.txt" + File "${INPDIR}\doc\ChangeLog-5.0-6.0.txt" File "${INPDIR}\doc\COPYING.txt" File "${INPDIR}\doc\INSTALL.txt" File "${INPDIR}\doc\NEWS.txt" File "${INPDIR}\doc\README.txt" File "${INPDIR}\doc\TODO.txt" File "${INPDIR}\doc\WARNINGS.txt" - File "${INPDIR}\doc\checksums.txt" +!ifdef INPDIR64 + StrCmp $X64 "" +3 + File "${INPDIR64}\doc\checksums64.txt" + GoTo +2 + File "${INPDIR}\doc\checksums32.txt" +!else + File "${INPDIR}\doc\checksums??.txt" +!endif File "${INPDIR}\doc\smartctl.8.html" File "${INPDIR}\doc\smartctl.8.txt" File "${INPDIR}\doc\smartd.8.html" @@ -169,7 +204,7 @@ SectionEnd Section "Uninstaller" UNINST_SECTION SectionIn 1 - AddSize 35 + AddSize 40 CreateDirectory "$INSTDIR" @@ -209,24 +244,23 @@ Section "Start Menu Shortcuts" MENU_SECTION ; runcmdu IfFileExists "$INSTDIR\bin\smartctl.exe" 0 +2 - IfFileExists "$INSTDIR\bin\smartd.exe" 0 +4 + IfFileExists "$INSTDIR\bin\smartd.exe" 0 noruncmd SetOutPath "$INSTDIR\bin" - File "${INPDIR}\bin\runcmdu.exe" + !insertmacro FileExe "bin\runcmdu.exe" "" File "${INPDIR}\bin\runcmdu.exe.manifest" + noruncmd: ; smartctl IfFileExists "$INSTDIR\bin\smartctl.exe" 0 noctl SetOutPath "$INSTDIR\bin" - IfFileExists "$WINDIR\system32\cmd.exe" 0 nocmd - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl (Admin CMD).lnk" "$WINDIR\system32\cmd.exe" '/k PATH=$INSTDIR\bin;%PATH%&cd /d "$INSTDIR\bin"' - nocmd: + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl (Admin CMD).lnk" "$WINDIR\system32\cmd.exe" '/k PATH=$INSTDIR\bin;%PATH%&cd /d "$INSTDIR\bin"' CreateDirectory "$SMPROGRAMS\smartmontools\smartctl Examples" FileOpen $0 "$SMPROGRAMS\smartmontools\smartctl Examples\!Read this first!.txt" "w" FileWrite $0 "All the example commands in this directory$\r$\napply to the first drive (sda).$\r$\n" FileClose $0 - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\All info (-a).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -a sda" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\All info (-x).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -x sda" !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\Identify drive (-i).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -i sda" - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\SMART attributes (-A).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -A sda" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\SMART attributes (-A -f brief).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -A -f brief sda" !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\SMART capabilities (-c).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -c sda" !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\SMART health status (-H).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -H sda" !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartctl Examples\SMART error log (-l error).lnk" "$INSTDIR\bin\runcmdu.exe" "smartctl -l error sda" @@ -252,15 +286,13 @@ Section "Start Menu Shortcuts" MENU_SECTION CreateShortCut "$SMPROGRAMS\smartmontools\smartd Examples\smartd.conf (view).lnk" "$EDITOR" "$INSTDIR\bin\smartd.conf" CreateShortCut "$SMPROGRAMS\smartmontools\smartd Examples\smartd.log (view).lnk" "$EDITOR" "$INSTDIR\bin\smartd.log" - ; smartd service (not on 9x/ME) - IfFileExists "$WINDIR\system32\cmd.exe" 0 nosvc - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service install, eventlog, 30min.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd install" - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service install, smartd.log, 10min.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd install -l local0 -i 600" - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service install, smartd.log, 30min.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd install -l local0" - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service remove.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd remove" - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service start.lnk" "$INSTDIR\bin\runcmdu.exe" "net start smartd" - !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service stop.lnk" "$INSTDIR\bin\runcmdu.exe" "net stop smartd" - nosvc: + ; smartd service + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service install, eventlog, 30min.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd install" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service install, smartd.log, 10min.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd install -l local0 -i 600" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service install, smartd.log, 30min.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd install -l local0" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service remove.lnk" "$INSTDIR\bin\runcmdu.exe" "smartd remove" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service start.lnk" "$INSTDIR\bin\runcmdu.exe" "net start smartd" + !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\smartd Examples\Service stop.lnk" "$INSTDIR\bin\runcmdu.exe" "net stop smartd" nod: ; Documentation @@ -278,14 +310,9 @@ Section "Start Menu Shortcuts" MENU_SECTION CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\drivedb.h (view).lnk" "$EDITOR" "$INSTDIR\bin\drivedb.h" !insertmacro CreateAdminShortCut "$SMPROGRAMS\smartmontools\Documentation\drivedb-add.h (create, edit).lnk" "$EDITOR" "$INSTDIR\bin\drivedb-add.h" nodb: - CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\AUTHORS.lnk" "$INSTDIR\doc\AUTHORS.txt" - CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\CHANGELOG.lnk" "$INSTDIR\doc\CHANGELOG.txt" + CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\ChangeLog.lnk" "$INSTDIR\doc\ChangeLog.txt" CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\COPYING.lnk" "$INSTDIR\doc\COPYING.txt" - CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\INSTALL.lnk" "$INSTDIR\doc\INSTALL.txt" CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\NEWS.lnk" "$INSTDIR\doc\NEWS.txt" - CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\README.lnk" "$INSTDIR\doc\README.txt" - CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\TODO.lnk" "$INSTDIR\doc\TODO.txt" - CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\WARNINGS.lnk" "$INSTDIR\doc\WARNINGS.txt" CreateShortCut "$SMPROGRAMS\smartmontools\Documentation\Windows version download page.lnk" "http://smartmontools-win32.dyndns.org/smartmontools/" nodoc: @@ -310,9 +337,8 @@ Section "Add install dir to PATH" PATH_SECTION SectionIn 1 - IfFileExists "$WINDIR\system32\cmd.exe" 0 +3 - Push "$INSTDIR\bin" - Call AddToPath + Push "$INSTDIR\bin" + Call AddToPath SectionEnd @@ -343,58 +369,15 @@ SectionGroup "Add smartctl to drive menu" SectionEnd !macroend - !insertmacro DriveSection 0 "SMART all info" "-a" + !insertmacro DriveSection 0 "SMART all info" "-x" !insertmacro DriveSection 1 "SMART status" "-Hc" - !insertmacro DriveSection 2 "SMART attributes" "-A" + !insertmacro DriveSection 2 "SMART attributes" "-A -f brief" !insertmacro DriveSection 3 "SMART short selftest" "-t short" !insertmacro DriveSection 4 "SMART long selftest" "-t long" !insertmacro DriveSection 5 "SMART continue selective selftest" '-t "selective,cont"' SectionGroupEnd -Section "UBCD4Win Plugin" UBCD_SECTION - - SectionIn 4 - - SetOutPath "$UBCDDIR" - DetailPrint "Create file: smartmontools.inf" - FileOpen $0 "$UBCDDIR\smartmontools.inf" "w" - FileWrite $0 '; smartmontools.inf$\r$\n; PE Builder v3 plug-in INF file$\r$\n' - FileWrite $0 '; Created by smartmontools installer$\r$\n' - FileWrite $0 '; http://smartmontools.sourceforge.net/$\r$\n$\r$\n' - FileWrite $0 '[Version]$\r$\nSignature= "$$Windows NT$$"$\r$\n$\r$\n' - FileWrite $0 '[PEBuilder]$\r$\nName="Disk -Diagnostic: smartmontools"$\r$\n' - FileWrite $0 'Enable=1$\r$\nHelp="files\smartctl.8.html"$\r$\n$\r$\n' - FileWrite $0 '[WinntDirectories]$\r$\na=Programs\smartmontools,2$\r$\n$\r$\n' - FileWrite $0 '[SourceDisksFolders]$\r$\nfiles=a,,1$\r$\n$\r$\n' - FileWrite $0 '[Append]$\r$\nnu2menu.xml, smartmontools_nu2menu.xml$\r$\n' - FileClose $0 - - DetailPrint "Create file: smartmontools_nu2menu.xml" - FileOpen $0 "$UBCDDIR\smartmontools_nu2menu.xml" "w" - FileWrite $0 '$\r$\n$\r$\n' - FileWrite $0 '$\t$\r$\n$\t$\t' - FileWrite $0 'Disk Tools$\r$\n$\t$\r$\n$\t$\r$\n' - FileWrite $0 '$\t$\tDiagnostic$\r$\n$\t' - FileWrite $0 '$\r$\n$\t$\r$\n$\t$\t' - FileWrite $0 'smartctl$\r$\n$\t$\r$\n$\r$\n' - FileClose $0 - - SetOutPath "$UBCDDIR\files" - File "${INPDIR}\bin\smartctl.exe" - File "${INPDIR}\bin\smartd.exe" - File "${INPDIR}\doc\smartctl.8.html" - File "${INPDIR}\doc\smartctl.8.txt" - File "${INPDIR}\doc\smartd.8.html" - File "${INPDIR}\doc\smartd.8.txt" - File "${INPDIR}\doc\smartd.conf" - -SectionEnd - - ;-------------------------------------------------------------------- Section "Uninstall" @@ -404,7 +387,7 @@ Section "Uninstall" ReadRegStr $0 HKLM "System\CurrentControlSet\Services\smartd" "ImagePath" StrCmp $0 "" nosrv ExecWait "net stop smartd" - MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Remove smartd service ?" IDYES 0 IDNO nosrv + MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Remove smartd service ?" /SD IDNO IDYES 0 IDNO nosrv ExecWait "$INSTDIR\bin\smartd.exe remove" nosrv: @@ -418,25 +401,25 @@ Section "Uninstall" GetFileTime "$INSTDIR\bin\smartd.conf" $0 $1 GetFileTime "$INSTDIR\doc\smartd.conf" $2 $3 StrCmp "$0:$1" "$2:$3" +2 0 - MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Delete configuration file$\n$INSTDIR\bin\smartd.conf ?" IDYES 0 IDNO noconf + MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Delete configuration file$\n$INSTDIR\bin\smartd.conf ?" /SD IDNO IDYES 0 IDNO noconf Delete "$INSTDIR\bin\smartd.conf" noconf: ; Remove log file ? IfFileExists "$INSTDIR\bin\smartd.log" 0 +3 - MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Delete log file$\n$INSTDIR\bin\smartd.log ?" IDYES 0 IDNO +2 + MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Delete log file$\n$INSTDIR\bin\smartd.log ?" /SD IDNO IDYES 0 IDNO +2 Delete "$INSTDIR\bin\smartd.log" ; Remove drivedb-add file ? IfFileExists "$INSTDIR\bin\drivedb-add.h" 0 +3 - MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Delete local drive database file$\n$INSTDIR\bin\drivedb-add.h ?" IDYES 0 IDNO +2 + MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "Delete local drive database file$\n$INSTDIR\bin\drivedb-add.h ?" /SD IDNO IDYES 0 IDNO +2 Delete "$INSTDIR\bin\drivedb-add.h" ; Remove files Delete "$INSTDIR\bin\smartctl.exe" Delete "$INSTDIR\bin\smartctl-nc.exe" Delete "$INSTDIR\bin\smartd.exe" - Delete "$INSTDIR\bin\syslogevt.exe" + Delete "$INSTDIR\bin\smartd_warning.cmd" ; TODO: Check for modifications? Delete "$INSTDIR\bin\drivedb.h" Delete "$INSTDIR\bin\drivedb.h.error" Delete "$INSTDIR\bin\drivedb.h.lastcheck" @@ -449,15 +432,17 @@ Section "Uninstall" Delete "$INSTDIR\bin\runcmda.exe.manifest" Delete "$INSTDIR\bin\runcmdu.exe" Delete "$INSTDIR\bin\runcmdu.exe.manifest" + Delete "$INSTDIR\bin\wtssendmsg.exe" Delete "$INSTDIR\doc\AUTHORS.txt" - Delete "$INSTDIR\doc\CHANGELOG.txt" + Delete "$INSTDIR\doc\ChangeLog.txt" + Delete "$INSTDIR\doc\ChangeLog-5.0-6.0.txt" Delete "$INSTDIR\doc\COPYING.txt" Delete "$INSTDIR\doc\INSTALL.txt" Delete "$INSTDIR\doc\NEWS.txt" Delete "$INSTDIR\doc\README.txt" Delete "$INSTDIR\doc\TODO.txt" Delete "$INSTDIR\doc\WARNINGS.txt" - Delete "$INSTDIR\doc\checksums.txt" + Delete "$INSTDIR\doc\checksums*.txt" Delete "$INSTDIR\doc\smartctl.8.html" Delete "$INSTDIR\doc\smartctl.8.txt" Delete "$INSTDIR\doc\smartd.8.html" @@ -484,47 +469,81 @@ Section "Uninstall" RMDir "$INSTDIR" ; Remove install dir from PATH - IfFileExists "$WINDIR\system32\cmd.exe" 0 +3 - Push "$INSTDIR\bin" - Call un.RemoveFromPath + Push "$INSTDIR\bin" + Call un.RemoveFromPath ; Remove drive menu registry entries !insertmacro DriveMenuRemove ; Check for still existing entries IfFileExists "$INSTDIR\bin\smartd.exe" 0 +3 - MessageBox MB_OK|MB_ICONEXCLAMATION "$INSTDIR\bin\smartd.exe could not be removed.$\nsmartd is possibly still running." + MessageBox MB_OK|MB_ICONEXCLAMATION "$INSTDIR\bin\smartd.exe could not be removed.$\nsmartd is possibly still running." /SD IDOK Goto +3 IfFileExists "$INSTDIR" 0 +2 - MessageBox MB_OK "Note: $INSTDIR could not be removed." + MessageBox MB_OK "Note: $INSTDIR could not be removed." /SD IDOK IfFileExists "$SMPROGRAMS\smartmontools" 0 +2 - MessageBox MB_OK "Note: $SMPROGRAMS\smartmontools could not be removed." + MessageBox MB_OK "Note: $SMPROGRAMS\smartmontools could not be removed." /SD IDOK SectionEnd ;-------------------------------------------------------------------- ; Functions +!macro AdjustSectionSize section + SectionGetSize ${section} $0 + IntOp $0 $0 / 2 + SectionSetSize ${section} $0 +!macroend + Function .onInit + ; Set default install directories + StrCmp $INSTDIR "" 0 endinst ; /D=PATH option specified ? + ReadRegStr $INSTDIR HKLM "Software\smartmontools" "Install_Dir" + StrCmp $INSTDIR "" 0 endinst ; Already installed ? + StrCpy $INSTDIR "$PROGRAMFILES\smartmontools" +!ifdef INPDIR64 + StrCpy $INSTDIR32 $INSTDIR + StrCpy $INSTDIR64 "$PROGRAMFILES64\smartmontools" +!endif + endinst: + +!ifdef INPDIR64 + ; Sizes of binary sections include 32-bit and 64-bit executables + !insertmacro AdjustSectionSize ${SMARTCTL_SECTION} + !insertmacro AdjustSectionSize ${SMARTD_SECTION} + !insertmacro AdjustSectionSize ${SMARTCTL_NC_SECTION} +!endif + ; Use Notepad++ if installed StrCpy $EDITOR "$PROGRAMFILES\Notepad++\notepad++.exe" IfFileExists "$EDITOR" +2 0 StrCpy $EDITOR "notepad.exe" - ; Get UBCD4Win install location - ReadRegStr $0 HKLM "Software\UBCD4Win" "InstallPath" - StrCmp $0 "" 0 +2 - StrCpy $0 "C:\UBCD4Win" - StrCpy $UBCDDIR "$0\plugin\Disk\Diagnostic\smartmontools" + Call ParseCmdLine +FunctionEnd - ; Hide "Add install dir to PATH" on 9x/ME - IfFileExists "$WINDIR\system32\cmd.exe" +2 0 - SectionSetText ${PATH_SECTION} "" +; Check x64 section and update INSTDIR accordingly - Call ParseCmdLine +!ifdef INPDIR64 +Function CheckX64 + SectionGetFlags ${X64_SECTION} $0 + IntOp $0 $0 & ${SF_SELECTED} + IntCmp $0 ${SF_SELECTED} x64 + StrCpy $X64 "" + StrCmp $INSTDIR32 "" +3 + StrCpy $INSTDIR $INSTDIR32 + StrCpy $INSTDIR32 "" + Goto done + x64: + StrCpy $X64 "t" + StrCmp $INSTDIR64 "" +3 + StrCpy $INSTDIR $INSTDIR64 + StrCpy $INSTDIR64 "" + done: FunctionEnd +!endif ; Command line parsing !macro CheckCmdLineOption name section @@ -554,6 +573,12 @@ Function ParseCmdLine Var /global nomatch StrCpy $nomatch "t" ; turn sections on or off +!ifdef INPDIR64 + !insertmacro CheckCmdLineOption "x64" ${X64_SECTION} + Call CheckX64 + StrCmp $opts "x64" 0 +2 + Return ; leave sections unchanged if only "x64" is specified +!endif !insertmacro CheckCmdLineOption "smartctl" ${SMARTCTL_SECTION} !insertmacro CheckCmdLineOption "smartd" ${SMARTD_SECTION} !insertmacro CheckCmdLineOption "smartctlnc" ${SMARTCTL_NC_SECTION} @@ -569,7 +594,6 @@ Function ParseCmdLine !insertmacro CheckCmdLineOption "drive3" ${DRIVE_3_SECTION} !insertmacro CheckCmdLineOption "drive4" ${DRIVE_4_SECTION} !insertmacro CheckCmdLineOption "drive5" ${DRIVE_5_SECTION} - !insertmacro CheckCmdLineOption "ubcd" ${UBCD_SECTION} StrCmp $opts "-" done StrCmp $nomatch "" done StrCpy $0 "$allopts,-" "" 1 @@ -578,45 +602,12 @@ Function ParseCmdLine done: FunctionEnd -; Directory page callbacks - -!macro CheckSection section - SectionGetFlags ${section} $0 - IntOp $0 $0 & 1 - IntCmp $0 1 done -!macroend - -Function SkipProgPath - !insertmacro CheckSection ${SMARTCTL_SECTION} - !insertmacro CheckSection ${SMARTCTL_NC_SECTION} - !insertmacro CheckSection ${SMARTD_SECTION} - !insertmacro CheckSection ${DRIVEDB_SECTION} - !insertmacro CheckSection ${DOC_SECTION} - !insertmacro CheckSection ${MENU_SECTION} - !insertmacro CheckSection ${PATH_SECTION} - !insertmacro CheckSection ${DRIVE_0_SECTION} - !insertmacro CheckSection ${DRIVE_1_SECTION} - !insertmacro CheckSection ${DRIVE_2_SECTION} - !insertmacro CheckSection ${DRIVE_3_SECTION} - !insertmacro CheckSection ${DRIVE_4_SECTION} - !insertmacro CheckSection ${DRIVE_5_SECTION} - Abort -done: -FunctionEnd - -Function SkipUBCDPath - !insertmacro CheckSection ${UBCD_SECTION} - Abort -done: -FunctionEnd - - ; Install runcmda.exe if missing Function CheckRunCmdA IfFileExists "$INSTDIR\bin\runcmda.exe" done 0 SetOutPath "$INSTDIR\bin" - File "${INPDIR}\bin\runcmda.exe" + !insertmacro FileExe "bin\runcmda.exe" "" File "${INPDIR}\bin\runcmda.exe.manifest" done: FunctionEnd @@ -789,6 +780,10 @@ FunctionEnd !endif Function ShellLinkSetRunAs + ; Set archive location of $PLUGINSDIR + Goto +2 + SetOutPath "$INSTDIR" + System::Store S ; push $0-$9, $R0-$R9 pop $9 ; $0 = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLink, &$1)