Diff for /embedaddon/smartmontools/os_win32/installer.nsi between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 16:32:16 version 1.1.1.2, 2012/10/09 09:36:45
Line 3 Line 3
 ;  ;
 ; Home page of code is: http://smartmontools.sourceforge.net  ; Home page of code is: http://smartmontools.sourceforge.net
 ;  ;
; Copyright (C) 2006-11 Christian Franke <smartmontools-support@lists.sourceforge.net>; Copyright (C) 2006-12 Christian Franke <smartmontools-support@lists.sourceforge.net>
 ;  ;
 ; This program is free software; you can redistribute it and/or modify  ; 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  ; it under the terms of the GNU General Public License as published by
Line 19 Line 19
   
 ;--------------------------------------------------------------------  ;--------------------------------------------------------------------
 ; Command line arguments:  ; Command line arguments:
; makensis -DINPDIR=<input-dir> -DOUTFILE=<output-file> -DVERSTR=<version-string> installer.nsi; makensis -DINPDIR=<input-dir> -DINPDIR64=<input-dir-64-bit> \
 ;   -DOUTFILE=<output-file> -DVERSTR=<version-string> installer.nsi
   
 !ifndef INPDIR  !ifndef INPDIR
   !define INPDIR "."    !define INPDIR "."
Line 40  SetCompressor /solid lzma Line 41  SetCompressor /solid lzma
 XPStyle on  XPStyle on
 InstallColors /windows  InstallColors /windows
   
InstallDir "$PROGRAMFILES\smartmontools"; Set in .onInit
InstallDirRegKey HKLM "Software\smartmontools" "Install_Dir";InstallDir "$PROGRAMFILES\smartmontools"
 ;InstallDirRegKey HKLM "Software\smartmontools" "Install_Dir"
   
 Var EDITOR  Var EDITOR
 Var UBCDDIR  
   
   !ifdef INPDIR64
     Var X64
     Var INSTDIR32
     Var INSTDIR64
   !endif
   
 LicenseData "${INPDIR}\doc\COPYING.txt"  LicenseData "${INPDIR}\doc\COPYING.txt"
   
 !include "FileFunc.nsh"  !include "FileFunc.nsh"
Line 61  RequestExecutionLevel admin Line 68  RequestExecutionLevel admin
   
 Page license  Page license
 Page components  Page components
Page directory SkipProgPath "" ""!ifdef INPDIR64
PageEx directory  Page directory CheckX64
  PageCallbacks SkipUBCDPath "" ""!else
  DirText "Setup will install the UBCD4Win plugin in the following folder."  Page directory
  DirVar $UBCDDIR!endif
PageExEnd 
 Page instfiles  Page instfiles
   
 UninstPage uninstConfirm  UninstPage uninstConfirm
Line 75  UninstPage instfiles Line 81  UninstPage instfiles
 InstType "Full"  InstType "Full"
 InstType "Extract files only"  InstType "Extract files only"
 InstType "Drive menu"  InstType "Drive menu"
 InstType "UBCD4Win plugin"  
   
   
 ;--------------------------------------------------------------------  ;--------------------------------------------------------------------
 ; Sections  ; Sections
   
   !ifdef INPDIR64
     Section "64-bit version (EXPERIMENTAL)" X64_SECTION
       ; Handled in Function CheckX64
     SectionEnd
   !endif
   
 SectionGroup "!Program files"  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    Section "smartctl" SMARTCTL_SECTION
   
     SectionIn 1 2      SectionIn 1 2
   
     SetOutPath "$INSTDIR\bin"      SetOutPath "$INSTDIR\bin"
    File "${INPDIR}\bin\smartctl.exe"    !insertmacro FileExe "bin\smartctl.exe" ""
   
   SectionEnd    SectionEnd
   
Line 105  SectionGroup "!Program files" Line 132  SectionGroup "!Program files"
       StrCmp $0 "" nosrv        StrCmp $0 "" nosrv
         ExecWait "net stop smartd" $1          ExecWait "net stop smartd" $1
   nosrv:    nosrv:
    File "${INPDIR}\bin\smartd.exe"    !insertmacro FileExe "bin\smartd.exe" ""
   
     IfFileExists "$INSTDIR\bin\smartd.conf" 0 +2      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 ?" IDYES 0 IDNO +2
         File "${INPDIR}\doc\smartd.conf"          File "${INPDIR}\doc\smartd.conf"
   
    IfFileExists "$WINDIR\system32\cmd.exe" 0 +2    IfFileExists "$WINDIR\system32\cmd.exe" 0 nosysl
      File /nonfatal "${INPDIR}\bin\syslogevt.exe"      !insertmacro FileExe "bin\syslogevt.exe" /nonfatal
     nosysl:
   
     ; Restart service ?      ; Restart service ?
     StrCmp $1 "0" 0 +3      StrCmp $1 "0" 0 +3
Line 126  SectionGroup "!Program files" Line 154  SectionGroup "!Program files"
     SectionIn 1 2      SectionIn 1 2
   
     SetOutPath "$INSTDIR\bin"      SetOutPath "$INSTDIR\bin"
    File "${INPDIR}\bin\smartctl-nc.exe"    !insertmacro FileExe "bin\smartctl-nc.exe" ""
   
   SectionEnd    SectionEnd
   
Line 155  Section "!Documentation" DOC_SECTION Line 183  Section "!Documentation" DOC_SECTION
   File "${INPDIR}\doc\README.txt"    File "${INPDIR}\doc\README.txt"
   File "${INPDIR}\doc\TODO.txt"    File "${INPDIR}\doc\TODO.txt"
   File "${INPDIR}\doc\WARNINGS.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.html"
   File "${INPDIR}\doc\smartctl.8.txt"    File "${INPDIR}\doc\smartctl.8.txt"
   File "${INPDIR}\doc\smartd.8.html"    File "${INPDIR}\doc\smartd.8.html"
Line 169  SectionEnd Line 204  SectionEnd
 Section "Uninstaller" UNINST_SECTION  Section "Uninstaller" UNINST_SECTION
   
   SectionIn 1    SectionIn 1
  AddSize 35  AddSize 40
   
   CreateDirectory "$INSTDIR"    CreateDirectory "$INSTDIR"
   
Line 209  Section "Start Menu Shortcuts" MENU_SECTION Line 244  Section "Start Menu Shortcuts" MENU_SECTION
   
   ; runcmdu    ; runcmdu
   IfFileExists "$INSTDIR\bin\smartctl.exe" 0 +2    IfFileExists "$INSTDIR\bin\smartctl.exe" 0 +2
  IfFileExists "$INSTDIR\bin\smartd.exe" 0 +4  IfFileExists "$INSTDIR\bin\smartd.exe" 0 noruncmd
     SetOutPath "$INSTDIR\bin"      SetOutPath "$INSTDIR\bin"
    File "${INPDIR}\bin\runcmdu.exe"    !insertmacro FileExe "bin\runcmdu.exe" ""
     File "${INPDIR}\bin\runcmdu.exe.manifest"      File "${INPDIR}\bin\runcmdu.exe.manifest"
     noruncmd:
   
   ; smartctl    ; smartctl
   IfFileExists "$INSTDIR\bin\smartctl.exe" 0 noctl    IfFileExists "$INSTDIR\bin\smartctl.exe" 0 noctl
Line 352  SectionGroup "Add smartctl to drive menu" Line 388  SectionGroup "Add smartctl to drive menu"
   
 SectionGroupEnd  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 '<!-- Nu2Menu entry for smartmontools -->$\r$\n<NU2MENU>$\r$\n'  
   FileWrite $0 '$\t<MENU ID="Programs">$\r$\n$\t$\t<MITEM TYPE="POPUP" MENUID="Disk Tools">'  
   FileWrite $0 'Disk Tools</MITEM>$\r$\n$\t</MENU>$\r$\n$\t<MENU ID="Disk Tools">$\r$\n'  
   FileWrite $0 '$\t$\t<MITEM TYPE="POPUP" MENUID="Diagnostic">Diagnostic</MITEM>$\r$\n$\t</MENU>'  
   FileWrite $0 '$\r$\n$\t<MENU ID="Diagnostic">$\r$\n$\t$\t<MITEM TYPE="ITEM" DISABLED="'  
   FileWrite $0 '@Not(@FileExists(@GetProgramDrive()\Programs\smartmontools\smartctl.exe))" '  
   FileWrite $0 'CMD="RUN" FUNC="cmd.exe /k cd /d @GetProgramDrive()\Programs\smartmontools&'  
   FileWrite $0 'set PATH=@GetProgramDrive()\Programs\smartmontools;%PATH%  ">'  
   FileWrite $0 'smartctl</MITEM>$\r$\n$\t</MENU>$\r$\n</NU2MENU>$\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"  Section "Uninstall"
Line 457  Section "Uninstall" Line 450  Section "Uninstall"
   Delete "$INSTDIR\doc\README.txt"    Delete "$INSTDIR\doc\README.txt"
   Delete "$INSTDIR\doc\TODO.txt"    Delete "$INSTDIR\doc\TODO.txt"
   Delete "$INSTDIR\doc\WARNINGS.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.html"
   Delete "$INSTDIR\doc\smartctl.8.txt"    Delete "$INSTDIR\doc\smartctl.8.txt"
   Delete "$INSTDIR\doc\smartd.8.html"    Delete "$INSTDIR\doc\smartd.8.html"
Line 506  SectionEnd Line 499  SectionEnd
 ;--------------------------------------------------------------------  ;--------------------------------------------------------------------
 ; Functions  ; Functions
   
   !macro AdjustSectionSize section
     SectionGetSize ${section} $0
     IntOp $0 $0 / 2
     SectionSetSize ${section} $0
   !macroend
   
 Function .onInit  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    ; Use Notepad++ if installed
   StrCpy $EDITOR "$PROGRAMFILES\Notepad++\notepad++.exe"    StrCpy $EDITOR "$PROGRAMFILES\Notepad++\notepad++.exe"
   IfFileExists "$EDITOR" +2 0    IfFileExists "$EDITOR" +2 0
     StrCpy $EDITOR "notepad.exe"      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"  
   
   ; Hide "Add install dir to PATH" on 9x/ME    ; Hide "Add install dir to PATH" on 9x/ME
   IfFileExists "$WINDIR\system32\cmd.exe" +2 0    IfFileExists "$WINDIR\system32\cmd.exe" +2 0
     SectionSetText ${PATH_SECTION} ""      SectionSetText ${PATH_SECTION} ""
Line 526  Function .onInit Line 537  Function .onInit
   Call ParseCmdLine    Call ParseCmdLine
 FunctionEnd  FunctionEnd
   
   ; Check x64 section and update INSTDIR accordingly
   
   !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  ; Command line parsing
 !macro CheckCmdLineOption name section  !macro CheckCmdLineOption name section
   StrCpy $allopts "$allopts,${name}"    StrCpy $allopts "$allopts,${name}"
Line 554  Function ParseCmdLine Line 586  Function ParseCmdLine
   Var /global nomatch    Var /global nomatch
   StrCpy $nomatch "t"    StrCpy $nomatch "t"
   ; turn sections on or off    ; 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 "smartctl" ${SMARTCTL_SECTION}
   !insertmacro CheckCmdLineOption "smartd" ${SMARTD_SECTION}    !insertmacro CheckCmdLineOption "smartd" ${SMARTD_SECTION}
   !insertmacro CheckCmdLineOption "smartctlnc" ${SMARTCTL_NC_SECTION}    !insertmacro CheckCmdLineOption "smartctlnc" ${SMARTCTL_NC_SECTION}
Line 569  Function ParseCmdLine Line 607  Function ParseCmdLine
   !insertmacro CheckCmdLineOption "drive3" ${DRIVE_3_SECTION}    !insertmacro CheckCmdLineOption "drive3" ${DRIVE_3_SECTION}
   !insertmacro CheckCmdLineOption "drive4" ${DRIVE_4_SECTION}    !insertmacro CheckCmdLineOption "drive4" ${DRIVE_4_SECTION}
   !insertmacro CheckCmdLineOption "drive5" ${DRIVE_5_SECTION}    !insertmacro CheckCmdLineOption "drive5" ${DRIVE_5_SECTION}
   !insertmacro CheckCmdLineOption "ubcd" ${UBCD_SECTION}  
   StrCmp $opts "-" done    StrCmp $opts "-" done
   StrCmp $nomatch "" done    StrCmp $nomatch "" done
     StrCpy $0 "$allopts,-" "" 1      StrCpy $0 "$allopts,-" "" 1
Line 578  Function ParseCmdLine Line 615  Function ParseCmdLine
 done:  done:
 FunctionEnd  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  ; Install runcmda.exe if missing
   
 Function CheckRunCmdA  Function CheckRunCmdA
   IfFileExists "$INSTDIR\bin\runcmda.exe" done 0    IfFileExists "$INSTDIR\bin\runcmda.exe" done 0
     SetOutPath "$INSTDIR\bin"      SetOutPath "$INSTDIR\bin"
    File "${INPDIR}\bin\runcmda.exe"    !insertmacro FileExe "bin\runcmda.exe" ""
     File "${INPDIR}\bin\runcmda.exe.manifest"      File "${INPDIR}\bin\runcmda.exe.manifest"
   done:    done:
 FunctionEnd  FunctionEnd
Line 789  FunctionEnd Line 793  FunctionEnd
 !endif  !endif
   
 Function ShellLinkSetRunAs  Function ShellLinkSetRunAs
     ; Set archive location of $PLUGINSDIR
     Goto +2
       SetOutPath "$INSTDIR"
   
   System::Store S ; push $0-$9, $R0-$R9    System::Store S ; push $0-$9, $R0-$R9
   pop $9    pop $9
   ; $0 = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLink, &$1)    ; $0 = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLink, &$1)

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>