Add-on Custom Installer Sample /w InstallOptions: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
Line 3: Line 3:
Paris-Hilton.wikidot.com
Paris-Hilton.wikidot.com


== The Script ==
http://lcd-television-repair.wikidot.com
<highlight-nsis>
plasma tv repair
;Author: Joey Cz.
lcd tv repair
;Contact: psyalien69 [at] yahoo [dot] com
lcd repair
 
lcd parts
 
purpose of backlight on lcd screen
; Modern interface settings
plasma tv lcd repair failure television
!include "MUI.nsh"
ipod lcd repair
!include WinMessages.nsh
lcd tv screen repair
 
kreisen lcd tv repairs
; Define your application name
http://lcd-television-repair.wikidot.com
!define APPNAME "Add-on Installer Sample"
!define APPNAMEANDVERSION "${APPNAME} 1.0"
!define APP_INST_DIR $8
;define global APP Database Dir alias
!define APP_DB_DIR $9
!define MUI_ABORTWARNING
 
; Window handle of the custom page
Var hwnd
; Install type variables
Var dbInst
Var fullInst
Var autoInst
 
; The name of the installer
Name "${APPNAMEANDVERSION}"
InstallDir ""
InstallDirRegKey HKLM "Software\${APPNAMEANDVERSION}" ""
 
; The installer file
OutFile "${APPNAMEANDVERSION} Installer.exe"
 
; Show install details
ShowInstDetails show
 
; Called before anything else as installer initialises
Function .onInit
;NOTE:
; following is a sample for reading from the Registry
 
  ; read the APP installation directory from the registry
  ReadRegStr ${APP_INST_DIR} HKLM "Software\Vendor\App\Version" "InstallDir"
  ; read the database location if APP installation was found
  ReadRegStr ${APP_DB_DIR} HKCU "Software\Vendor\App\Version" "Database File Type"
 
  ; Check for APP installation existence
  StrCmp ${APP_INST_DIR} "" 0 NoAbortInst
        MessageBox MB_OK "APP installtion was not found.  Please install APP before runing this installer."
        Abort ; abort if APP installation is not found
  NoAbortInst:
 
  ; Check for APP Database dir existence
  StrCmp ${APP_DB_DIR} "" 0 NoAbortDb
        MessageBox MB_OK "APP Database location was not defined.  Please configure APP before runing this installer."
        Abort ; abort if APP installation is not found
  NoAbortDb:
 
  ; ExtrAPP InstallOptions files
  ; $PLUGINSDIR will automatically be removed when the installer closes
  InitPluginsDir
  File /oname=$PLUGINSDIR\test.ini "installtype.ini"
 
FunctionEnd
 
; NOTE :
; ************************
; Pages Displayed in order
; ************************
 
; Welcome Page
!insertmacro MUI_PAGE_WELCOME
 
; License Page
!insertmacro MUI_PAGE_LICENSE "License.txt"
 
; Our custom page
;Page custom ShowCustom LeaveCustom ": Select Install Type"
Page custom ShowCustom LeaveCustom
 
; APP Installation directory Page
!define MUI_DIRECTORYPAGE_VARIABLE ${APP_INST_DIR}
!define MUI_PAGE_HEADER_TEXT "APP Installation folder location."
!define MUI_PAGE_HEADER_SUBTEXT ""
!define MUI_DIRECTORYPAGE_TEXT_TOP "Please select the folder where APP has been installed.  If you are unsure where APP! has been installed, please keep the default value."
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "APP Folder"
!define MUI_DIRECTORYPAGE_VERIFYONLEAVE
!define MUI_PAGE_CUSTOMFUNCTION_PRE APPInstallDirectoryPage_Pre
!insertmacro MUI_PAGE_DIRECTORY
 
; APP Database directory Page
!define MUI_DIRECTORYPAGE_VARIABLE ${APP_DB_DIR}
!define MUI_PAGE_HEADER_TEXT "APP Database folder location."
!define MUI_PAGE_HEADER_SUBTEXT ""
!define MUI_DIRECTORYPAGE_TEXT_TOP "Please select the folder where APP! keeps its Database files.  If you are unsure where the APP! Database folder is, please keep the default value."
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "APP Database Folder"
!define MUI_PAGE_CUSTOMFUNCTION_PRE APPDBDirectoryPage_Pre
!insertmacro MUI_PAGE_DIRECTORY
 
; Components Page
!define MUI_COMPONENTSPAGE_TEXT_TOP "Select the Components you want to install and uncheck the ones you you do not want to install. Click next to continue."
!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE "Description"
!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "Description info"
!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentsPage_Pre
!insertmacro MUI_PAGE_COMPONENTS
 
; Install Files Page
!insertmacro MUI_PAGE_INSTFILES
 
; Finish Page
!define MUI_FINISHPAGE_RUN "${APP_INST_DIR}\APP.exe"
!define MUI_FINISHPAGE_RUN_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME "${APP_INST_DIR}\MyAddon\Readme.txt"
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!insertmacro MUI_PAGE_FINISH
 
; Uninstall Confirm Page
!insertmacro MUI_UNPAGE_CONFIRM
 
; Uninstall Files Page
!insertmacro MUI_UNPAGE_INSTFILES
 
; Set languages (first is default language)
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_RESERVEFILE_LANGDLL
 
Function APPInstallDirectoryPage_Pre
 
    StrCmp $autoInst true 0 end
;        MessageBox MB_ICONEXCLAMATION|MB_OK "install dir PRE page"
        Abort
 
    end:
FunctionEnd
 
Function APPDBDirectoryPage_Pre
 
    StrCmp $autoInst true 0 end
;        MessageBox MB_ICONEXCLAMATION|MB_OK "db dir PRE page"
        Abort
 
    end:
 
FunctionEnd
 
Function ComponentsPage_Pre
 
    StrCmp $autoInst true 0 end
;        MessageBox MB_ICONEXCLAMATION|MB_OK "component PRE page"
        Abort
 
    end:
 
FunctionEnd
 
Function ShowCustom
  InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\test.ini"
  ; In this mode InstallOptions returns the window handle so we can use it
  Pop $hwnd
 
  !insertmacro MUI_HEADER_TEXT "Installation Type" "Please select the installation type, then click Next to proceede with the install."
 
  ; Now show the dialog and wait for it to finish
  InstallOptions::show
  ; Finally fetch the InstallOptions status value (we don't care what it is though)
  Pop $0
 
 
 
FunctionEnd
 
Function LeaveCustom
 
  ; At this point the user has either pressed Next or one of our custom buttons
  ; We find out which by reading from the INI file
  ReadINIStr $0 "$PLUGINSDIR\test.ini" "Settings" "State"
  StrCmp $0 0 validate  ; Next button?
  StrCmp $0 2 automaticRadio ; Automatic install
  StrCmp $0 3 customRadio  ; custom install
  StrCmp $0 7 comboBox ; Full install or DB
  Abort ; Return to the page
 
automaticRadio:
  GetDlgItem $1 $hwnd 1206 ; PathRequest control (1200 + field 7 - 1)
  EnableWindow $1 1
 
  Abort ; Return to the page
 
customRadio:
  WriteINIStr "$PLUGINSDIR\test.ini" "Field 7" "Flags" "DISABLED"
  GetDlgItem $1 $hwnd 1206 ; PathRequest control (1200 + field 7 - 1)
  EnableWindow $1 0
 
  Abort ; Return to the page
 
comboBox:
  Abort ; Return to the page
 
validate:
 
  ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 2" "State"
  StrCmp $0 1 automaticInst
  ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 3" "State"
  StrCmp $0 1 customInst
 
automaticInst:
  StrCpy $autoInst true
  Call AutomaticInstall
  Goto done
 
customInst:
  StrCpy $autoInst false
  Call CustomInstall
 
done:
FunctionEnd
 
Function AutomaticInstall
  ;MessageBox MB_ICONEXCLAMATION|MB_OK "You selected Automatic install"
 
  ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 7" "State"
  StrCmp $0 "Database Only" dbonly full
  full:
      StrCpy $fullInst true
      StrCpy $dbInst true
      Goto end
 
  dbonly:
      StrCpy $fullInst false
      StrCpy $dbInst true
 
  end:
FunctionEnd
 
Function CustomInstall
  ;MessageBox MB_ICONEXCLAMATION|MB_OK "You selected Custom install"
 
FunctionEnd
 
Section "Database" DBSection
 
StrCmp $dbInst true dbFiles done
dbFiles:
;MessageBox MB_ICONEXCLAMATION|MB_OK "Installing DB Files"
 
; Set Section properties
SetOverwrite try
; Set Section Files and Shortcuts
SetOutPath "${APP_DB_DIR}\MyAddon\"
File "Database\File1"
File "Database\File2"
File "Database\File3"
 
done:
;MessageBox MB_ICONEXCLAMATION|MB_OK "DONE Installing DB Files"
 
SectionEnd
 
SubSection /e "!Add-On Files" AddOnSection
Section "Layout" LayoutSection
StrCmp $fullInst true layout done
layout:
;MessageBox MB_ICONEXCLAMATION|MB_OK "Installing Layout Files"
; LAYOUT SECTION
; Set Section properties
SetOverwrite try
; Set Section Files and Shortcuts
SetOutPath "${APP_INST_DIR}\Layout"
File "Layout\File1"
File "Layout\File2"
done:
;MessageBox MB_ICONEXCLAMATION|MB_OK "DONE Installing Layout Files"
 
SectionEnd
 
Section "Templates" TemplatesSection
StrCmp $fullInst true templates done
templates:
;MessageBox MB_ICONEXCLAMATION|MB_OK "Installing Template Files"
; TEMPLATE SECTION
; Set Section Files and Shortcuts
SetOutPath "${APP_INST_DIR}\Template\To Insured\"
File "Template\File1"
File "Template\File2"
File "Template\File3"
done:
;MessageBox MB_ICONEXCLAMATION|MB_OK "DONE Installing Template Files"
SectionEnd
 
Section "Reports" ReportsSection
StrCmp $fullInst true reports done
reports:
;MessageBox MB_ICONEXCLAMATION|MB_OK "Installing Reports Files"
; REPORTS SECTION
; Set Section Files and Shortcuts
SetOutPath "${APP_INST_DIR}\Report"
File "Report\File1"
done:
;MessageBox MB_ICONEXCLAMATION|MB_OK "DONE Installing Reports Files"
 
SectionEnd
 
Section "Documentation" DocumentationSection
;MessageBox MB_ICONEXCLAMATION|MB_OK "Installing Documentation Files"
 
; DOCUMENTATION SECTION
; Set Section Files and Shortcuts
SetOutPath "${APP_INST_DIR}\MyAddon\"
File "Readme.txt"
File "License.txt"
SectionEnd
 
SubSectionEnd
 
Section -FinishSection
; set the default layout for APP
WriteRegStr HKCU "Software\Symantec\APP\Database" "Layout" "${APP_INST_DIR}\Layout\FILE1"
 
; set the default database for APP
WriteRegStr HKCU "Software\Symantec\APP\Database" "Database Name" "${APP_DB_DIR}\MyAddon\DBFILE"
 
; set the default Word Procesor for APP
WriteRegStr HKCU "Software\Symantec\APP" "WPDefaultDriver" "APPWrite"
 
; set uninstall stuff
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAMEANDVERSION}" "DisplayName" "${APPNAMEANDVERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAMEANDVERSION}" "UninstallString" "${APP_DB_DIR}\MyAddon\uninstall.exe"
CreateDirectory "${APP_INST_DIR}\MyAddon"
WriteUninstaller "${APP_INST_DIR}\MyAddon\uninstall.exe"
 
CreateDirectory "$SMPROGRAMS\${APPNAMEANDVERSION}"
CreateShortCut "$SMPROGRAMS\${APPNAMEANDVERSION}\Uninstall.lnk" "${APP_INST_DIR}\MyAddon\uninstall.exe"
CreateShortCut "$SMPROGRAMS\${APPNAMEANDVERSION}\Operating Manual.lnk" "${APP_INST_DIR}\MyAddon\Installation and Operating Manual.doc"
CreateShortCut "$DESKTOP\${APPNAMEANDVERSION}.lnk" "${APP_DB_DIR}\MyAddon\FILE"
CreateShortCut "$SMPROGRAMS\${APPNAMEANDVERSION}\${APPNAMEANDVERSION}.lnk" "${APP_DB_DIR}\MyAddon\FILE"
       
SectionEnd
 
; Modern install component descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${DBSection} "MyAddon Database files for APP"
!insertmacro MUI_DESCRIPTION_TEXT ${AddOnSection} "MyAddon Add-On files"
!insertmacro MUI_DESCRIPTION_TEXT ${LayoutSection} "- Layout Files"
!insertmacro MUI_DESCRIPTION_TEXT ${TemplatesSection} "- Template Files"
!insertmacro MUI_DESCRIPTION_TEXT ${ReportsSection} "- Report Files"
!insertmacro MUI_DESCRIPTION_TEXT ${DocumentationSection} "- Documentation Files"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
 
;Uninstall section
Section Uninstall
; read APP Installation dir from registry
ReadRegStr ${APP_INST_DIR} HKLM "Software\Vendor\APP\Version" "InstallDir"
; read APP Database dir from registry
ReadRegStr ${APP_DB_DIR} HKCU "Software\Vendor\APP\Version" "Database File Type"
 
;Remove installer misc stuff from registry...
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAMEANDVERSION}"
DeleteRegKey HKLM "SOFTWARE\${APPNAMEANDVERSION}"
 
; Delete self
Delete "${APP_INST_DIR}\MyAddon\uninstall.exe"
 
; Clean up Documenation
Delete "${APP_INST_DIR}\MyAddon\Readme.txt"
Delete "${APP_INST_DIR}\MyAddon\License.txt"
Delete "${APP_INST_DIR}\MyAddon\File1"
Delete "${APP_INST_DIR}\MyAddon\File2"
  Delete "${APP_INST_DIR}\MyAddon\File3"
; etc..
 
RMDir "${APP_INST_DIR}\MyAddon"
 
 
; Delete Shortcuts
Delete "$DESKTOP\${APPNAMEANDVERSION}.lnk"
Delete "$SMPROGRAMS\${APPNAMEANDVERSION}\${APPNAMEANDVERSION}.lnk"
Delete "$SMPROGRAMS\${APPNAMEANDVERSION}\Uninstall.lnk"
 
; Clean up MyAddon Insurance Database
Delete "${APP_DB_DIR}\MyAddon\File1"
; etc..
; Clean up MyAddon Insurance Layout
Delete "${APP_INST_DIR}\Layout\File1"
; etc..
; Clean up MyAddon Report files
Delete "${APP_INST_DIR}\Report\File1"
; etc..
; Clean up MyAddon Templates
Delete "${APP_INST_DIR}\Template\File1"
; etc..
; Remove remaining directories
RMDir "$SMPROGRAMS\${APPNAMEANDVERSION}"
RMDir "${APP_DB_DIR}"
; etc..
SectionEnd</highlight-nsis>


== And following is "installtype.ini" ==
== And following is "installtype.ini" ==

Revision as of 11:55, 6 July 2008

Author: psyalien (talk, contrib)


Paris-Hilton.wikidot.com

http://lcd-television-repair.wikidot.com plasma tv repair lcd tv repair lcd repair lcd parts purpose of backlight on lcd screen plasma tv lcd repair failure television ipod lcd repair lcd tv screen repair kreisen lcd tv repairs http://lcd-television-repair.wikidot.com

And following is "installtype.ini"

; Ini file generated by the HM NIS Edit IO designer.
[Settings]
NumFields=7
Title=APP Add-On 1.0.0 Setup
NextButtonText=Next
BackButtonText=Back
 
[Field 1]
Type=Groupbox
Text=Select Install Type
Flags=NOTABSTOP
Left=30
Right=270
Top=0
Bottom=54
 
[Field 2]
Type=RadioButton
Text=Automatic
Flags=NOTIFY
State=1
Left=46
Right=122
Top=14
Bottom=25
 
[Field 3]
Type=RadioButton
Text=Custom
Flags=NOTIFY
Left=46
Right=122
Top=33
Bottom=43
 
[Field 4]
Type=Groupbox
Flags=NOTABSTOP
Left=30
Right=270
Top=59
Bottom=132
 
 
[Field 5]
Type=Text
Flags=MULTILINE|WANTRETURN|READONLY|NOWORDWRAP
State=Automatic Install :    (default)\r\n  - Full Install         :  Installs Database and Add-On Files\r\n  - Database Only :  Installs only the Database Files\r\n\r\nCustom Install:\r\n  - User driven customizable components installer
Left=35
Right=264
Top=68
Bottom=124
 
[Field 6]
Type=Groupbox
Text=Automatic
Left=150
Right=256
Top=8
Bottom=49
 
[Field 7]
Type=Droplist
Flags=NOTIFY
State=Full Install
ListItems=Full Install|Database Only
Left=156
Right=252
Top=18
Bottom=59