FirebirdSQL/問答篇/安裝程式的腳本製作

出自VFP Wiki

跳轉到: 導航, 搜尋

目錄

製作安裝程式的注意事項

  • 安裝前
    • 請將正在執行的Firebird或Interbase,停止運作.
  • 安裝
    1. 下載Firebird ZIP檔案.並且解壓縮檔案
    2. 切換目錄到Firebird\bin
    3. 註冊Firebird程式所在目錄: instreg.exe install (這樣它會向系統註冊.HKLM\Software\Firebird Project\Firebird Server\Instances)
    4. 將Firebird當作服務來執行時:instsvc.exe install
    5. 將兩各檔案"fbclient.dll" 及 "gds32.dll"拷貝到系統目錄(WinDir\System32),
  • 反安裝
    1. 停止FirebirdSQL Server
    2. 執行指令 "instsvc.exe remove"
    3. 執行指令 "instreg.exe remove"
    4. 刪除安裝目錄
    5. 在系統目錄(WinDir\System32),刪除兩各檔案 "fbclient.dll" 及 "gds32.dll"



Firebird&ODBC安裝腳本--NSIS版本

By Ruey rueyho@ms11.hinet.net
Script generated by the HM NIS Edit Script Wizard.
HM NIS Edit Wizard helper defines

!define PRODUCT_NAME "FirebirdSQL" !define PRODUCT_VERSION "1.5.0" !define PRODUCT_PUBLISHER "Firebird Project" !define PRODUCT_WEB_SITE "http://wiki.sunyear.com.tw/index.php?page=FirebirdSQL" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\FirebirdSQL\bin\fbguard.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_SRC_DIR "" !define PRODUCT_Firebird_DIR "D:\firebird\FirebirdSQL" !define PRODUCT_ODBC_DIR "D:\firebird\ODBC_DLL"

MUI 1.67 compatible ------

!include "MUI.nsh"

MUI Settings

!define MUI_ABORTWARNING !define MUI_ICON "D:\Firebird\FirebirdSQL\Firebird.ico" !define MUI_UNICON "D:\Firebird\FirebirdSQL\Firebird.ico"

Welcome page

!insertmacro MUI_PAGE_WELCOME

License page

!insertmacro MUI_PAGE_LICENSE "${PRODUCT_Firebird_DIR}\讀我.txt"

Components page

!insertmacro MUI_PAGE_COMPONENTS

Directory page

!insertmacro MUI_PAGE_DIRECTORY

Instfiles page

!insertmacro MUI_PAGE_INSTFILES

Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\fbguard.exe -a"
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Example.file"
!insertmacro MUI_PAGE_FINISH
Uninstaller pages

!insertmacro MUI_UNPAGE_INSTFILES

Language files

!insertmacro MUI_LANGUAGE "TradChinese"


MUI end ------
--------------------------------



Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "Firebird_Setup.exe"

InstallDir "$PROGRAMFILES\FirebirdSQL"

InstallDir "C:\fb15" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show


InstType "單機版" InstType "網路Server版" InstType "網路Client版" InstType /NOCUSTOM Section "Firebird Server" SEC01

 SetOutPath "$INSTDIR"
 SetOverwrite on
 File /r "${PRODUCT_Firebird_DIR}\*.*"
 ExecShell open '$INSTDIR\bin\instclient.exe' 'install fbclient' SW_SHOWMINIMIZED
 ExecShell open '$INSTDIR\bin\instclient.exe' 'install gds32' SW_SHOWMINIMIZED
 ExecShell open '$INSTDIR\bin\instreg.exe' 'install ' SW_SHOWMINIMIZED
 ExecShell open '$INSTDIR\bin\instsvc.exe' 'install -auto -superserver -guardian -z' SW_SHOWMINIMIZED
 ;ExecShell open '$INSTDIR\bin\instsvc.exe' 'start' SW_SHOWMINIMIZED
 SectionIn 1 2

SectionEnd Section "Firebird Client" SEC02

 SetOutPath "$INSTDIR"
 SetOverwrite on
 ExecShell open '$INSTDIR\bin\instclient.exe' 'install fbclient' SW_SHOWMINIMIZED
 ExecShell open '$INSTDIR\bin\instclient.exe' 'install gds32' SW_SHOWMINIMIZED
 SectionIn 1 3

SectionEnd

Section "Firebird ODBC" SEC03

 SetOutPath "$SYSDIR"
 SetOverwrite on
 File "${PRODUCT_ODBC_DIR}\IscDbc.dll"
 File "${PRODUCT_ODBC_DIR}\OdbcJdbc.dll"
 File "${PRODUCT_ODBC_DIR}\OdbcJdbcSetup.dll"
 
 ;ExecShell open  '$SYSDIR\regsvr32.exe ' '$SYSDIR\OdbcJdbcSetup.dll' SW_SHOWMINIMIZED
 ;SetOutPath "$INSTDIR"
 RegDLL "$INSTDIR\ODBC\OdbcJdbcSetup.dll"
 SectionIn 1 2 3

SectionEnd

Section -AdditionalIcons

 WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
 CreateDirectory "$SMPROGRAMS\FirebirdSQL"
 CreateShortCut "$SMPROGRAMS\FirebirdSQL\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
 CreateShortCut "$SMPROGRAMS\FirebirdSQL\Uninstall.lnk" "$INSTDIR\uninst.exe"
 CreateShortCut "$SMPROGRAMS\FirebirdSQL\fbguard.lnk" "$INSTDIR\bin\fbguard.exe" "-a"

SectionEnd

Section -Post

 WriteUninstaller "$INSTDIR\uninst.exe"
 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\fbguard.exe"
 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\fbguard.exe"
 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"

SectionEnd

Section descriptions

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN

 !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "FirebirdSQL DataBase Server"
 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "FierbirdSQL Client"
 !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Firebird ODBC"

!insertmacro MUI_FUNCTION_DESCRIPTION_END

=======================================================
安裝前的動作
=======================================================

Function .onInit

 ExecShell open '$INSTDIR\bin\instsvc.exe' 'stop' SW_SHOWMINIMIZED
 ExecShell open '$INSTDIR\bin\instsvc.exe' 'remove -z' SW_SHOWMINIMIZED
 ExecShell open '$INSTDIR\bin\instreg.exe' 'remove -z' SW_SHOWMINIMIZED

FunctionEnd

=======================================================
安裝後的動作
=======================================================

Function .onInstSuccess

  ;ExecShell open '$INSTDIR\bin\instclient.exe' 'install fbclient' SW_SHOWMINIMIZED
  ;ExecShell open '$INSTDIR\bin\instclient.exe' 'install gds32' SW_SHOWMINIMIZED
  ;ExecShell open '$INSTDIR\bin\instreg.exe' 'install ' SW_SHOWMINIMIZED
  ;ExecShell open '$INSTDIR\bin\instsvc.exe' 'install -auto -superserver -guardian -z' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instsvc.exe' 'start' SW_SHOWMINIMIZED
  
  ;ExecShell open 'c:\fb15\bin\fbguard.exe -a'
  ;Exec 'c:\fb15\bin\fbguard.exe -a'
  ;Exec 'c:\fb15\bin\instsvc start'
 ;!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioA.ini"
 ;!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioB.ini"
 ;!insertmacro MUI_INSTALLOPTIONS_EXTRACT "test.ini"

FunctionEnd

=======================================================
反安裝後的動作
=======================================================

Function un.onUninstSuccess

 HideWindow
 MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地從你的電腦移除。"

FunctionEnd

=======================================================
反安裝前的動作
=======================================================

Function un.onInit

 MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你確定要完全移除 $(^Name) ,其及所有的元件?" IDYES +2
 Abort

FunctionEnd

=======================================================
反安裝的動作
=======================================================

Section Uninstall

 ;Firebird反安裝
 ExecShell open 'net ' 'stop "firebird guardian"'
 ExecShell open '$INSTDIR\bin\instsvc.exe' 'stop'
 ExecShell open '$INSTDIR\bin\instsvc.exe' 'remove -z'
 ExecShell open '$INSTDIR\bin\instreg.exe' 'remove -z'
 Delete "$INSTDIR\${PRODUCT_NAME}.url"
 Delete "$INSTDIR\uninst.exe"
 ;Delete "$INSTDIR\Example.file"
 ;Delete "$INSTDIR\AppMainExe.exe"
 
 
 ;ODBC反安裝
 UnRegDLL "$INSTDIR\ODBC\OdbcJdbcSetup.dll"
 ;SetOutPath "$SYSDIR"
 ;ExecShell open 'regsvr32.exe' '/u .\OdbcJdbcSetup.dll' SW_SHOWMINIMIZED
 Delete "$SYSDIR\OdbcJdbcSetup.dll"
 Delete "$SYSDIR\OdbcJdbc.dll"
 Delete "$SYSDIR\IscDbc.dll"
 
 
 RMDir /r "$INSTDIR"
 
 ;程式集--反安裝
 Delete "$SMPROGRAMS\FirebirdSQL\Uninstall.lnk"
 Delete "$SMPROGRAMS\FirebirdSQL\Website.lnk"
 RMDir "$SMPROGRAMS\FirebirdSQL"
 RMDir /r "$SMPROGRAMS\FirebirdSQL"
 ;RMDir "$INSTDIR"
 ;註冊碼移除
 DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
 DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
 SetAutoClose true

SectionEnd

Firebird 安裝腳本--Inno Setup

Initial Developer's Public License.
The contents of this file are subject to the Initial Developer's Public
License Version 1.0 (the "License"). You may not use this file except
in compliance with the License. You may obtain a copy of the License at
http://www.ibphoenix.com/idpl.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is copyright 2001-2003 Paul Reeves for IBPhoenix.
The Initial Developer of the Original Code is Paul Reeves for IBPhoenix.
All Rights Reserved.
Contributor(s)
Tilo Muetze, Theo ? and Michael Rimov for improved detection
of an existing install directory.
Simon Carter for the WinSock2 detection.
Usage Notes
This script has been designed to work with My InnoSetup Extensions 3.0.6.2
or later. It may work with earlier versions but this is neither guaranteed
nor tested. My InnoSetup Extensions is available from
http://www.wintax.nl/isx/
Either classic_server_install or super_server_install
Default to SuperServer if not defined
  1. define super_server_install
  2. define server_architecture "SuperServer"
  3. define msvc_version 6
  4. define FirebirdURL "http://www.firebirdsql.org"
  5. define BaseVer "1_5"

[Setup] AppName=Firebird Database Server 1.5 ({#server_architecture})

The following is important - all ISS install packages should
duplicate this for v1.5. See the InnoSetup help for details.

AppID=FBDBServer_{#BaseVer} AppVerName=Firebird 1.5.0 {#server_architecture} AppPublisher=Firebird Project AppPublisherURL={#FirebirdURL} AppSupportURL={#FirebirdURL} AppUpdatesURL={#FirebirdURL} DefaultDirName={code:InstallDir|{pf}\Firebird\Firebird_{#BaseVer}} DefaultGroupName=Firebird_{#BaseVer} AllowNoIcons=true SourceDir=..\..\..\..\..\firebird2 LicenseFile=src\install\misc\IPLicense.txt InfoBeforeFile=src\install\arch-specific\win32\installation_readme.txt InfoAfterFile=src\install\arch-specific\win32\readme.txt AlwaysShowComponentsList=true WizardImageFile=src\install\arch-specific\win32\firebird_install_logo1.bmp PrivilegesRequired=admin

  1. ifdef classic_server_install

UninstallDisplayIcon={app}\bin\fb_inet_server.exe

  1. else

UninstallDisplayIcon={app}\bin\fbserver.exe

  1. endif

OutputDir=builds\win32\install_image OutputBaseFilename=Firebird-1.5.0-Win32-{#server_architecture} Compression=bzip

[Types] Name: ServerInstall; Description: Full installation of server and development tools. Name: DeveloperInstall; Description: Installation of Client tools for Developers and database administrators. Name: ClientInstall; Description: Minimum client install - no server, no tools.

[Components] Name: ServerComponent; Description: Server component; Types: ServerInstall Name: DevAdminComponent; Description: Tools component; Types: ServerInstall DeveloperInstall Name: ClientComponent; Description: Client component; Types: ServerInstall DeveloperInstall ClientInstall; Flags: fixed disablenouninstallwarning

[Tasks]

Server tasks

Name: UseGuardianTask; Description: "Use the &Guardian to control the server?"; Components: ServerComponent; MinVersion: 4.0,4.0 Name: UseApplicationTask; Description: An &Application?; GroupDescription: "Run Firebird server as:"; Components: ServerComponent; MinVersion: 4,4; Flags: exclusive Name: UseServiceTask; Description: A &Service?; GroupDescription: "Run Firebird server as:"; Components: ServerComponent; MinVersion: 0,4; Flags: exclusive Name: AutoStartTask; Description: "Start &Firebird automatically everytime you boot up?"; Components: ServerComponent; MinVersion: 4,4;

Developer Tasks

Name: MenuGroupTask; Description: Create a Menu &Group; Components: ServerComponent; MinVersion: 4,4;

One for Ron
Name
MenuGroupTask\desktopicon; Description: Create a &desktop icon; Components: ServerComponent; MinVersion: 4.0,4.0;

[Run]

Always register Firebird

Filename: "{app}\bin\instreg.exe"; Parameters: "install ""{app}"" "; StatusMsg: Updating the registry; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized

If on NT/Win2k etc and 'Install and start service' requested

Filename: "{app}\bin\instsvc.exe"; Parameters: "install ""{app}"" {code:ServiceStartFlags|""""} "; StatusMsg: "Setting up the service"; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Filename: "{app}\bin\instsvc.exe"; Description: "Start Firebird Service now?"; Parameters: start; StatusMsg: Starting the server; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized postinstall; Tasks: UseServiceTask; Check: StartEngine;

If 'start as application' requested
  1. ifdef classic_server_install

Filename: "{code:StartApp|{app}\bin\fb_inet_server.exe}"; Description: "Start Firebird now?"; Parameters: "-a"; StatusMsg: Starting the server; MinVersion: 0,4.0; Components: ServerComponent; Flags: nowait postinstall; Tasks: UseApplicationTask; Check: StartEngine;

  1. else

Filename: "{code:StartApp|{app}\bin\fbserver.exe}"; Description: "Start Firebird now?"; Parameters: "-a"; StatusMsg: Starting the server; MinVersion: 0,4.0; Components: ServerComponent; Flags: nowait postinstall; Tasks: UseApplicationTask; Check: StartEngine;

  1. endif

[Registry]

If user has chosen to start as App they may well want to start automatically. That is handled by a function below.
Unless we set a marker here the uninstall will leave some annoying debris.

Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Firebird; ValueData: ""; Flags: uninsdeletevalue; Tasks: UseApplicationTask;

This doesn't seem to get cleared automatically by instreg on uninstall, so lets make sure of it

Root: HKLM; Subkey: SOFTWARE\FirebirdSQL; Flags: uninsdeletekeyifempty; Components: ClientComponent DevAdminComponent ServerComponent;

[Icons]

  1. ifdef classic_server_install

Name: "{group}\Firebird Server"; Filename: {app}\bin\fb_inet_server.exe; Parameters: "-a"; Flags: runminimized; MinVersion: 4.0,4.0; Tasks: MenuGroupTask; Check: InstallServerIcon; IconIndex: 0; Comment: "Run Firebird classic server (without guardian)";

  1. else

Name: "{group}\Firebird Server"; Filename: {app}\bin\fbserver.exe; Parameters: "-a"; Flags: runminimized; MinVersion: 4.0,4.0; Tasks: MenuGroupTask; Check: InstallServerIcon; IconIndex: 0; Comment: "Run Firebird Superserver (without guardian)";

  1. endif

Name: "{group}\Firebird Guardian"; Filename: {app}\bin\fbguard.exe; Parameters: "-a"; Flags: runminimized; MinVersion: 4.0,4.0; Tasks: MenuGroupTask; Check: InstallGuardianIcon; IconIndex: 1; Comment: "Run Firebird server (with guardian)"; Name: "{group}\Firebird 1.5 Release Notes"; Filename: {app}\doc\Firebird_v1_ReleaseNotes.pdf; MinVersion: 4.0,4.0; Tasks: MenuGroupTask; IconIndex: 1; Comment: "Firebird 1.0 release notes. (Requires Acrobat Reader.)"; Name: "{group}\Firebird 1.5 Readme"; Filename: {app}\readme.txt; MinVersion: 4.0,4.0; Tasks: MenuGroupTask; Name: "{group}\Uninstall Firebird"; Filename: {uninstallexe}; Comment: "Uninstall Firebird"

[Files] Source: src\install\misc\IPLicense.txt; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion; Source: src\install\arch-specific\win32\readme.txt; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion; Source: output\firebird.conf; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist; Source: output\aliases.conf; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist; Source: output\security.fdb; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist; Source: output\security.fbk; DestDir: {app}; Components: ServerComponent; Flags: ignoreversion; Source: output\firebird.log; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall skipifsourcedoesntexist external dontcopy; Source: output\firebird.msg; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion; Source: output\bin\gbak.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\gbak.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: ignoreversion; Source: output\bin\gdef.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: ignoreversion; Source: output\bin\gfix.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\gfix.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: ignoreversion; Source: output\bin\gpre.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: ignoreversion; Source: output\bin\gsec.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\gsec.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: sharedfile ignoreversion; Source: output\bin\gsplit.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: sharedfile ignoreversion; Source: output\bin\gstat.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\fbguard.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\fb_lock_print.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion;

  1. ifdef classic_server_install

Source: output\bin\fb_inet_server.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion;

  1. else

Source: output\bin\fbserver.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion;

  1. endif

Source: output\bin\ib_util.dll; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\instreg.exe; DestDir: {app}\bin; Components: ClientComponent; Flags: sharedfile ignoreversion; Source: output\bin\instsvc.exe; DestDir: {app}\bin; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\bin\isql.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: ignoreversion; Source: output\bin\qli.exe; DestDir: {app}\bin; Components: DevAdminComponent; Flags: ignoreversion; Source: output\doc\*.*; DestDir: {app}\doc; Components: DevAdminComponent; Flags: skipifsourcedoesntexist ignoreversion; Source: output\doc\sql.extensions\*.*; DestDir: {app}\doc\sql.extensions; Components: DevAdminComponent; Flags: skipifsourcedoesntexist ignoreversion; Source: output\help\*.*; DestDir: {app}\help; Components: DevAdminComponent; Flags: ignoreversion; Source: output\include\*.*; DestDir: {app}\include; Components: DevAdminComponent; Flags: ignoreversion; Source: output\intl\fbintl.dll; DestDir: {app}\intl; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\lib\*.*; DestDir: {app}\lib; Components: DevAdminComponent; Flags: ignoreversion; Source: output\UDF\*.*; DestDir: {app}\UDF; Components: ServerComponent; Flags: sharedfile ignoreversion; Source: output\examples\*.*; DestDir: {app}\examples; Components: DevAdminComponent; Flags: ignoreversion;

For now (RC2 timeframe) we are not recommending co-existence with other versions of Firebird or InterBase
so we can install the client library and its wrapper into {sys}
Source
output\bin\gds32.dll; DestDir: {app}\bin; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder;
Source
output\bin\fbclient.dll; DestDir: {app}\bin; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder;

Source: output\bin\gds32.dll; DestDir: {sys}\; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder; Source: output\bin\fbclient.dll; DestDir: {sys}\; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder; Source: src\install\arch-specific\win32\msvcrt.dll; DestDir: {sys}\; Components: ClientComponent; Flags: uninsneveruninstall sharedfile onlyifdoesntexist; Source: src\install\arch-specific\win32\msvcp{#msvc_version}0.dll; DestDir: {sys}\; Components: ClientComponent; Flags: uninsneveruninstall sharedfile onlyifdoesntexist; Source: src\extlib\fbudf\fbudf.sql; DestDir: {app}\examples; Components: ServerComponent; Flags: ignoreversion; Source: src\extlib\fbudf\fbudf.txt; DestDir: {app}\doc; Components: ServerComponent; Flags: ignoreversion; Source: src\extlib\ib_util.pas; DestDir: {app}\include; Components: DevAdminComponent; Flags: ignoreversion;

Source
firebird\install\doc_all_platforms\Firebird_v1_ReleaseNotes.pdf; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion;
Source
firebird\install\doc_all_platforms\Firebird_v1_*.html; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion;

[UninstallRun] Filename: {app}\bin\instsvc.exe; Parameters: stop; StatusMsg: "Stopping the service"; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; check: RemoveThisVersion; Filename: {app}\bin\instsvc.exe; Parameters: remove -g; StatusMsg: "Removing the service"; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; check: RemoveThisVersion; Filename: {app}\bin\instreg.exe; Parameters: remove; StatusMsg: "Updating the registry"; MinVersion: 4.0,4.0; Flags: runminimized; check: RemoveThisVersion;

[UninstallDelete] Type: files; Name: {app}\*.lck Type: files; Name: {app}\*.evn

[_ISTool] EnableISX=true

[Code] program Setup;

const

 sWinSock2 = 'ws2_32.dll';
 sNoWinsock2 = 'Please Install Winsock 2 Update before continuing';
 sMSWinsock2Update = 'http://www.microsoft.com/windows95/downloads/contents/WUAdminTools/S_WUNetworkingTools/W95Sockets2/Default.asp';
 sWinsock2Web = 'Winsock 2 is not installed.'#13#13'Would you like to Visit the Winsock 2 Update Home Page?';
 ProductVersion = 'PRODUCT_VER_STRING';

var

 Winsock2Failure:    Boolean;

InterBaseVer: Array of Integer;

 //  Likely values for installed versions of InterBase are:
 //  [6,2,0,nnn]   Firebird 1.0.0
 //  [6,2,2,nnn]   Firebird 1.0.2
 //  [6,0,n,n]     InterBase 6.0
 //  [6,5,n,n]     InterBase 6.5
 //  [7,0,n,n]     InterBase 7.0

FirebirdVer: Array of Integer;

 //  Likely values for installed versions of Firebird are:
 //  [6,2,0,nnn]   Firebird 1.0.0
 //  [6,2,2,nnn]   Firebird 1.0.2
 //  [6,2,3,nnn]   Firebird 1.0.3
 //  [1,5,0,nnnn]  Firebird 1.5.0
 fbclientStartCount,
 gds32StartCount : Integer;

procedure GetSharedLibCountAtStart; var

 dw: Cardinal;

begin

 if RegQueryDWordValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs','C:\WINNT\System32\fbclient.dll', dw) then
   fbclientStartCount := dw
 else
   fbclientStartCount := 0;
 if RegQueryDWordValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs','C:\WINNT\System32\gds32.dll', dw) then
   gds32StartCount := dw
 else
   gds32StartCount := 0;
 

end;

procedure SetSharedLibCountAtEnd; // gds32 and fbclient get registered twice as shared libraries. // This appears to be a bug in InnoSetup. It only appears to affect // libraries the first time they are registered, and it only seems // to affect stuff in the {sys} directory. To work around this we // check the count before install and after install. var

 dw: cardinal;

begin

 if RegQueryDWordValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs','C:\WINNT\System32\fbclient.dll', dw) then begin
   if (( dw - fbclientStartCount ) > 1 ) then begin
     dw := fbclientStartCount + 1 ;
     RegWriteDWordValue(HKEY_LOCAL_MACHINE,
     'SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs','C:\WINNT\System32\fbclient.dll', dw);
   end;
 end;
 if RegQueryDWordValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs','C:\WINNT\System32\gds32.dll', dw) then begin
   
   if (( dw - gds32StartCount ) > 1 ) then begin
     dw := gds32StartCount + 1 ;
     RegWriteDWordValue(HKEY_LOCAL_MACHINE,
     'SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs','C:\WINNT\System32\gds32.dll', dw);
   end;
 end;

end;

function CheckWinsock2(): Boolean; begin

 Result := True;
 //Check if Winsock 2 is installed (win 95 only)
 if (not UsingWinNt) and (not FileExists(AddBackslash(GetSystemDir) + sWinSock2)) then begin
   Winsock2Failure := True;
   Result := False;
   end
 else
 	Winsock2Failure := False;

end;

function InitializeSetup(): Boolean; var

 i: Integer;

begin

 result := true;
 if not CheckWinsock2 then
   exit;
 //Look for a running version of Firebird
 i:=FindWindowByClassName('FB_Disabled');
 if ( i=0 ) then
   i:=FindWindowByClassName('FB_Server');
   
 if ( i<>0 ) then begin
   result := false;
   MsgBox('An existing Firebird Server is running. You must close the '+
          'application or stop the service before continuing.', mbError, MB_OK);
 end;
 
 //Check the shared library count.
 if ( result=true ) then
   GetSharedLibCountAtStart;
 

end;

procedure DeInitializeSetup(); var

 ErrCode: Integer;

begin

 // Did the install fail because winsock 2 was not installed?
 if Winsock2Failure then
   // Ask user if they want to visit the Winsock2 update web page.
 	if MsgBox(sWinsock2Web, mbInformation, MB_YESNO) = idYes then
 	  // User wants to visit the web page
     InstShellExec(sMSWinsock2Update, , , SW_SHOWNORMAL, ErrCode);
     

end;

procedure DecodeVersion( verstr: String; var verint: array of Integer ); var

 i,p: Integer; s: string;

begin

 verint := [0,0,0,0];
 i := 0;
 while ( (Length(verstr) > 0) and (i < 4) ) do
 begin
 	p := pos('.', verstr);
 	if p > 0 then
 	begin
     if p = 1 then s:= '0' else s:= Copy( verstr, 1, p - 1 );
 	  verint[i] := StrToInt(s);
 	  i := i + 1;
 	  verstr := Copy( verstr, p+1, Length(verstr));
 	end
 	else
 	begin
 	  verint[i] := StrToInt( verstr );
 	  verstr := ;
 	end;
 end;

end;

function GetInstalledVersion(ADir: String): Array of Integer; var AString: String; VerInt: Array of Integer; begin

 if (ADir<>) then begin
   GetVersionNumbersString( ADir+'\bin\gbak.exe', Astring);
   DecodeVersion(AString, VerInt);
 end;
 result := VerInt;

end;

function GetFirebirdDir: string; //Check if Firebird installed, get version info to global var and return root dir var FirebirdDir: String; begin FirebirdVer  := [0,0,0,0];

 RegQueryStringValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\FirebirdSQL\Firebird\CurrentVersion','RootDirectory', FirebirdDir);
 if (FirebirdDir<>) then
   FirebirdVer:=GetInstalledVersion(FirebirdDir);

end;

function GetInterBaseDir: string; //Check if InterBase installed, get version info to global var and return root dir var

 InterBaseDir: String;

begin InterBaseVer  := [0,0,0,0];

 RegQueryStringValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\Borland\InterBase\CurrentVersion','RootDirectory', InterBaseDir);
 if (InterBaseDir<>) then
   InterBaseVer:=GetInstalledVersion(InterBaseDir);

end;

//This function tries to find an existing install of Firebird 1.5 //If it succeeds it suggests that directory for the install //Otherwise it suggests the default for Fb 1.5 function InstallDir(Default: String): String; var InstallRootDir, InterBaseRootDir, FirebirdRootDir: String; begin InstallRootDir := ;

 // Try to find the value of "RootDirectory" in the Firebird
 // registry settings. This is either where Fb 1.0 exists or Fb 1.5
 InterBaseRootDir:=GetInterBaseDir;
 FirebirdRootDir:=GetFirebirdDir;
 
 if (FirebirdRootDir <> ) and ( FirebirdRootDir = InterBaseRootDir ) then  //Fb 1.0 must be installed so don't overwrite it.
   InstallRootDir := Default;
   
 if (( InstallRootDir =  ) and
     ( FirebirdRootDir = Default )) then // Fb 1.5 is already installed,
   InstallRootDir := Default;             // so we offer to install over it
 if (( InstallRootDir = ) and
     ( FirebirdVer[0] = 1 ) and ( FirebirdVer[1] = 5 ) ) then   // Firebird 1.5 is installed
   InstallRootDir := FirebirdRootDir;                            // but the user has changed the default
 // if we haven't found anything then try the FIREBIRD env var
 // User may have preferred location for Firebird, but has possibly
 // uninstalled previous version
 if (InstallRootDir = ) then
   InstallRootDir:=getenv('FIREBIRD');
   
 //if no existing locations found make sure we default to the default.
 if (InstallRootDir = ) then
   InstallRootDir := Default;
 Result := ExpandConstant(InstallRootDir);

end;

function UseGuardian(Default: String): String; begin if ShouldProcessEntry('ServerComponent', 'UseGuardianTask')= srYes then

 Result := '1'

else

 Result := '0';

end;

function ServiceStartFlags(Default: String): String; var

 classic: String;

begin

 classic := ;
  1. ifdef classic_server_install
 classic := ' -classic';
  1. endif
 Result := ;
 if ShouldProcessEntry('ServerComponent', 'UseGuardianTask')= srYes then begin
   if ShouldProcessEntry('ServerComponent', 'AutoStartTask')= srYes then
     Result := ' -auto ' + classic + ' -g '
   else
     Result := classic + ' -g ';
   end
 else
   if ShouldProcessEntry('ServerComponent', 'AutoStartTask')= srYes then
     Result := ' -auto ';

end;

function InstallGuardianIcon(): Boolean; begin

 result := false;
 if ShouldProcessEntry('ServerComponent', 'UseApplicationTask')= srYes then
   if ShouldProcessEntry('ServerComponent', 'UseGuardianTask')= srYes then
     result := true;

end;

function InstallServerIcon(): Boolean; begin

 result := false;
 if ShouldProcessEntry('ServerComponent', 'UseApplicationTask')= srYes then
   if ShouldProcessEntry('ServerComponent', 'UseGuardianTask')= srNo then
     result := true;

end;

function StartApp(Default: String): String; var

 AppPath: String;

begin

 AppPath:=ExpandConstant('{app}');
 //Now start the app as
 if ShouldProcessEntry('ServerComponent', 'UseGuardianTask')= srYes then
   Result := AppPath+'\bin\fbguard.exe'
 else
  1. ifdef classic_server_install
   Result := AppPath+'\bin\fb_inet_server.exe';
  1. else
   Result := AppPath+'\bin\fbserver.exe';
  1. endif

end;

procedure CurStepChanged(CurStep: Integer); var

 AppStr: String;

begin

 if ( CurStep=csFinished ) then begin
   //If user has chosen to install an app and run it automatically set up the registry accordingly
   //so that the server or guardian starts evertime they login.
   if (ShouldProcessEntry('ServerComponent', 'AutoStartTask')= srYes) and
       ( ShouldProcessEntry('ServerComponent', 'UseApplicationTask')= srYes ) then begin
     AppStr := StartApp()+' -a';
     RegWriteStringValue (HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'Firebird', AppStr);
   end;
 end;
 
 if ( CurStep=csFinished ) then
   //Check that the shared lib count is correct.
   SetSharedLibCountAtEnd;

end;

function FirebirdOneRunning: boolean; var

 i: Integer;

begin

 result := false;
 
 //Look for a running copy of InterBase or Firebird 1.0.
 i:=0;
 i:=FindWindowByClassName('IB_Server') ;
 if ( i<>0 ) then
   result := true;
   

end;

function StartEngine: boolean; begin

 result := not FirebirdOneRunning;

end;

function RemoveThisVersion: boolean; //check if we are still the current version before removing var

 VersionStr: string;

begin

 result := false;
 if RegQueryStringValue(HKEY_LOCAL_MACHINE,
   'SOFTWARE\FirebirdSQL\Firebird\CurrentVersion','Version', VersionStr ) then
   if (pos(ProductVersion,VersionStr)>0) then
     result := true;

end;

begin end.

Firebird ODBC安裝腳本--Inno Setup

The contents of this file are subject to the Initial
Developer's Public License Version 1.0 (the "License");
you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.ibphoenix.com/idpl.html.
Software distributed under the License is distributed on
an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
express or implied. See the License for the specific
language governing rights and limitations under the License.
The Original Code was created by Vladimir Tsvigun for IBPhoenix.
Copyright (c) 2003 Vladimir Tsvigun
All Rights Reserved.
OdbcJdbcSetup.iss
for Inno Setup ver
3.0.6.2 from http://www.innosetup.com/
for MsVC 6.0
  1. define sourceDll="..\..\Builds\MsVc60.win\Release\"

[Setup] AppName=Firebird ODBC AppVerName=OdbcJdbc version 1-1-beta WizardImageFile=firebird-logo1.bmp WizardImageBackColor=clWhite WizardSmallImageFile=firebird-logo2.bmp WizardSmallImageBackColor=clWhite DefaultDirName={pf}\Firebird ODBC DefaultGroupName=Firebird ODBC UninstallDisplayIcon={app}\OdbcJdbcSetup.dll

[Files]

Source: "{#sourceDll}IscDbc.dll"; DestDir: "{app}"; Flags: ignoreversion deleteafterinstall Source: "{#sourceDll}OdbcJdbc.dll"; DestDir: "{app}"; Flags: ignoreversion deleteafterinstall Source: "{#sourceDll}OdbcJdbcSetup.dll"; DestDir: "{app}"; Flags: ignoreversion deleteafterinstall

Source
"FirebirdOdbc.hlp"; DestDir: "{app}"

Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

[Icons] Name: "{group}\Firebird ODBC"; Filename: "{app}\unins000.exe"

[Run] Filename: "{sys}\regsvr32.exe"; Parameters: "/s ""{app}""\OdbcJdbcSetup.dll"

[UninstallRun] Filename: "{sys}\regsvr32.exe"; Parameters: "/u ""{app}""\OdbcJdbcSetup.dll"

InterBase7安裝腳本--以Inno Setup為例

原作者lleey lleey@163.com
這是由《My Inno Setup Extensions》程序建立的腳本向導程序.
有關怎樣建立此腳本的方法請參考幫助以及D
\Inno Setup 2\BDEInst\中的readme文件
編寫本腳本所用到的知識(如為什么要復制那些文件、目的是什么,為什么要對注冊表文件進行那樣的修改等)請參考有關文獻。
如有疑問請來信共同探討。lleey@163.com
愿此腳本對所有志同道合者的學習、開發有所幫助,共同推動IB應用!

[Setup] AppName=《飛行學院航空理論試題庫系統》 AppVerName=Exam2003 AppPublisher=空軍第十三飛行學院理論訓練處 DefaultDirName={pf}\Exam DefaultGroupName=Exam OutputBaseFilename=ExamSetup Uninstallable=yes

如果要在NT 3.51以上版本上運行安裝程序則變下面的注釋行變為運行行即可
MinVersion=4,3.51

[Types]

設置若干個安裝主題,供用戶根據不同目的選擇安裝

Name: "ExamBase"; Description: "安裝服務器和題庫" Name: "Exam"; Description: "安裝組卷子系統" Name: "MakeBase"; Description: "安裝建庫子系統" Name: "Custom"; Description: "用戶自由選擇安裝"; Flags: iscustom

[Components]

本節列出待安裝的所有組件。如果[Type]節中的一個安裝主題需要某個組件,就在此組件對應的Types
保留字后面列出此主題名

Name: IB7clt; Description: 客戶機數據庫系統; Types: ExamBase Exam MakeBase Custom; Flags: fixed Name: IB7svr; Description: 服務器數據庫系統; Types: ExamBase Custom Name: Base; Description: 題庫; Types: ExamBase Custom Name: Maketable; Description: 建庫子系統; Types: MakeBase Custom Name: Exam; Description: 組卷子系統; Types: Exam Custom

[Dirs]

設置安裝目錄。其中數據庫系統包括服務器和客戶機均放在C
\windows\system\interbase7文件夾下、而數據庫則放在應用程序存放
目錄的\base子文件夾下。

Name: {sys}\InterBase7 Name: {sys}\InterBase7\bin; Name: {app}\base; Components:Base

[Tasks] Name: "desktopicon"; Description: "創建一個桌面圖標(&D) "; GroupDescription: "添加圖標: "; MinVersion: 4,4; Components: MakeTable exam [Files]

==========================================================
復制數據庫系統。對于任何用到IB7的應用此部分都是一樣的。 ||
==========================================================
復制IB7的系統數據庫admin.ib,僅當該文件不存在時復制、卸載時不刪除、只適用于IB7svr組件。以下不再贅述。

Source: E:\Borland\InterBase7\admin.ib; DestDir: {sys}\InterBase7; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall; Components: IB7svr Source: E:\Borland\InterBase7\ibconfig; DestDir: {sys}\InterBase7; CopyMode: normal; Components: IB7svr Source: E:\Borland\InterBase7\interbase.msg; DestDir: {sys}\InterBase7; CopyMode: normal; Flags: sharedfile; Components: IB7clt

將設置3050耑口的文件復制到臨時目錄。

Source: E:\Borland\InterBase7\Set3050.exe; DestDir: {tmp}; Flags: deleteafterinstall Source: E:\Borland\InterBase7\bin\ibguard.exe; DestDir: {sys}\InterBase7\bin; CopyMode: alwaysskipifsameorolder; Components: IB7svr; Flags: sharedfile Source: E:\Borland\InterBase7\bin\ibserver.exe; DestDir: {sys}\InterBase7\bin; CopyMode: alwaysskipifsameorolder; Components: IB7svr; Flags: sharedfile Source: E:\Borland\InterBase7\bin\instreg.exe; DestDir: {sys}\InterBase7\bin; Components: IB7clt Source: C:\Windows\System\gds32.dll; DestDir: {sys}; CopyMode: alwaysskipifsameorolder; Flags: sharedfile; Components: IB7clt Source: C:\Windows\System\msvcrt.dll; DestDir: {sys}; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall sharedfile; Components: IB7clt

復制許可証

Source: "E:\Borland\InterBase7\ib_license.dat"; DestDir: "{sys}\InterBase7"; CopyMode: normal; Components: IB7svr

在Win9x/Me系統下復制服務器中止服務器文件 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Source: E:\Borland\InterBase7\bin\stopsrv.exe; DestDir: {sys}\InterBase7\bin; CopyMode: alwaysskipifsameorolder; MinVersion: 4.0,0; Components: IB7svr

在NT/2000系統下復制將IB7設置為NT服務的文件 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Source: E:\Borland\InterBase7\bin\instsvc.exe; DestDir: {sys}\InterBase7\bin; CopyMode: alwaysskipifsameorolder; MinVersion: 0,4.0; Components: IB7svr

==================================================================================================
復制組卷子系統。以上是關于數據庫系統的復制,以下是應用程序的復制,各用戶可自由決定下面的復制內容||
==================================================================================================

Source: "E:\Exam\bintest\exam.exe"; DestDir: "{app}"; DestName: "exam.exe"; CopyMode: normal; Components: Exam Source: "E:\Exam\bintest\exam.ini"; DestDir: "{app}"; CopyMode: normal; Components: Exam Source: "E:\Exam\bintest\ExamHor.dot"; DestDir: "{app}"; CopyMode: normal; Components: Exam Source: "E:\Exam\bintest\ExamVer.dot"; DestDir: "{app}"; CopyMode: normal; Components: Exam Source: "E:\Exam\bintest\config.ini"; DestDir: "{app}"; CopyMode: normal; Components: Exam Maketable

復制建庫子系統

Source: "E:\Exam\Maketable\Maketable.exe"; DestDir: "{app}"; CopyMode: normal; Components: Maketable Source: "E:\exam\PrtTable\PrtTable.exe"; DestDir: "{app}"; CopyMode: normal; Components: Maketable

復制題庫

Source: "E:\exam\Base\Exam.ib"; DestDir: "{app}\base"; CopyMode: normal; Components: Base


[Registry]

====================================================
此部分是對注冊表的修改,具體內容可參考相關文檔說明||
====================================================
僅對Win9x/Me ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: InterBaseGuardian; ValueData: {app}\bin\ibguard.exe; MinVersion: 4.0,0; Flags: uninsdeletevalue; Components: IB7svr

此行是設置IB7的版本號,務必是真實的版本號,否則會造成其他安裝程序的錯誤判斷

Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: Version; ValueData: WI-V7.0.1.1; Flags: uninsdeletevalue; Components: IB7svr Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: ServerDirectory; ValueData: {sys}\InterBase7\bin; Flags: uninsdeletevalue; Components: IB7svr Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; Flags: uninsdeletekeyifempty; Components: IB7svr Root: HKLM; Subkey: Software\Borland\InterBase; Flags: uninsdeletekeyifempty; Components: IB7svr

為向下兼容
Root
HKLM; Subkey: Software\Borland\InterBase; ValueType: DWord; ValueName: UseCount; ValueData: {reg:HKLM\Software\Borland\InterBase, UseCount|0} + 1
Root
HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: DWord; ValueName: UseCount; ValueData: {reg:HKLM\Software\Borland\InterBase\CurrentVersion, UseCount|0} + 1
obsolete - Root
HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: DefaultMode; ValueData: -r; Components: Server

Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: GuardianOptions; ValueData: 1; Components: IB7svr Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: ServerDirectory; ValueData: {sys}\InterBase7\bin\; Components: IB7svr

Software\Borland\InterBase\CurrentVersion\RootDirectory
&
Software\Borland\InterBase\CurrentVersion\Version
的鍵值由instreg.exe文件自行設置,此文件還將刪除Software\Borland\InterBase鍵名下的空鍵名

[Icons] Name: "{group}\組卷"; Filename: "{app}\exam.exe"; Components: Exam Name: "{group}\建庫"; Filename: "{app}\maketable.exe"; Components: Maketable Name: "{group}\打印題庫"; Filename: "{app}\prttable.exe"; Components: Maketable Name: "{userdesktop}\組卷"; Filename: "{app}\exam.exe"; Components: Exam Name: "{userdesktop}\建庫"; Filename: "{app}\maketable.exe"; Components: Maketable Name: "{userdesktop}\打印題庫"; Filename: "{app}\prttable.exe"; Components: Maketable Name: "{group}\卸載"; Filename: "{app}\unins000.exe"

[Run]

在結束安裝之前運行此節所規定的內容
==================================
運行臨時文件夾中的Set3050.exe,目的是設置3050口,此口是IB7所默認的通信監視口

Filename: {tmp}\Set3050.exe; Flags: runminimized

運行instreg.exe,目的是對一些特殊的注冊表內容進行設置。

Filename: {sys}\InterBase7\bin\instreg.exe; Parameters: "install ""{sys}\InterBase7"""; Flags: nowait runminimized

只對NT/2000,目的是將IB7服務器設置成NT eservice(NT服務);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Filename: {sys}\InterBase7\bin\instsvc.exe; Parameters: install {sys}\InterBase7 -auto -z; Flags: runminimized; MinVersion: 0,4.0; Components: IB7svr Filename: {sys}\InterBase7\bin\instsvc.exe; Parameters: start; Flags: nowait runminimized; MinVersion: 0,4.0; Components: IB7svr

只對Win9x/Me ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Filename: {sys}\InterBase7\bin\ibguard.exe; Flags: nowait; MinVersion: 4.0,0; Components: IB7svr


相關網站

  1. NSIS Home
  2. NSIS download1
  3. NSIS download2
  4. HM NIS EDIT: A Free NSIS Editor/IDE


參考文章

  1. 編寫 NSIS 的安裝腳本 By ∮Ω奧米加空間∮ dc
  2. NSIS: 結構化的LangString 寫作 By 中文化聯盟 Kii Ali
  3. 全方位掌握 NSIS 的使用 By 少昊 teach.hanzify.org
  4. Quick Guide to NSIS
  5. 安裝程式--Inno Setup
  6. Unofficial Firebird Installation page
  7. InterBase Installation & Deployment Options
  8. InterBase Installation Info Script Downloads