📄 setup.rul
字号:
//////////////////////////////////////////////////////////////////////////////////// IIIIIII SSSSSS// II SS InstallShield (R)// II SSSSSS (c) 1996-1997, InstallShield Software Corporation// II SS (c) 1990-1996, InstallShield Corporation// IIIIIII SSSSSS All Rights Reserved.////// This code is generated as a starting setup template. You should// modify it to provide all necessary steps for your setup.////// File Name: Setup.rul//// Description: InstallShield script//// Comments: This template script performs a basic setup on a// Windows 95 or Windows NT 4.0 platform. With minor// modifications, this template can be adapted to create// new, customized setups.////////////////////////////////////////////////////////////////////////////////// // Include header file#include "sdlang.h"#include "sddialog.h"////////////////////// string defines ////////////////////////////#define UNINST_LOGFILE_NAME "Uninst.isu"//////////////////// installation declarations /////////////////// // ----- DLL prototypes ----- // your DLL prototypes // ---- script prototypes ----- // generated prototype ShowDialogs(); prototype MoveFileData(); prototype HandleMoveDataError( NUMBER ); prototype ProcessBeforeDataMove(); prototype ProcessAfterDataMove(); prototype SetupRegistry(); prototype SetupFolders(); prototype CleanUpInstall(); prototype SetupInstall(); prototype SetupScreen(); prototype CheckRequirements(); prototype DialogShowSdWelcome(); prototype DialogShowSdShowInfoList(); prototype DialogShowSdAskDestPath(); prototype DialogShowSdSetupType(); prototype DialogShowSdComponentDialog2(); prototype DialogShowSdFinishReboot(); // your prototypes // ----- global variables ------ // generated BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup; STRING svDir; STRING svName, svCompany, svSerial; STRING szAppPath; STRING svSetupType; // your global variables/////////////////////////////////////////////////////////////////////////////////// MAIN PROGRAM//// The setup begins here by hiding the visible setup// window. This is done to allow all the titles, images, etc. to// be established before showing the main window. The following// logic then performs the setup in a series of steps./////////////////////////////////////////////////////////////////////////////////program Disable( BACKGROUND ); CheckRequirements(); SetupInstall(); SetupScreen(); if (ShowDialogs()<0) goto end_install; if (ProcessBeforeDataMove()<0) goto end_install; if (MoveFileData()<0) goto end_install; if (ProcessAfterDataMove()<0) goto end_install; if (SetupRegistry()<0) goto end_install; if (SetupFolders()<0) goto end_install; end_install: CleanUpInstall(); // If an unrecoverable error occurred, clean up the partial installation. // Otherwise, exit normally. if (bInstallAborted) then abort; endif;endprogram///////////////////////////////////////////////////////////////////////////////// //// Function: ShowDialogs //// //// Purpose: This function manages the display and navigation //// the standard dialogs that exist in a setup. //// /////////////////////////////////////////////////////////////////////////////////function ShowDialogs() NUMBER nResult; begin Dlg_Start: // beginning of dialogs label Dlg_SdWelcome: nResult = DialogShowSdWelcome(); if (nResult = BACK) goto Dlg_Start; Dlg_SdShowInfoList: nResult = DialogShowSdShowInfoList(); if (nResult = BACK) goto Dlg_SdWelcome; Dlg_SdAskDestPath: nResult = DialogShowSdAskDestPath(); if (nResult = BACK) goto Dlg_SdShowInfoList; Dlg_SdSetupType: nResult = DialogShowSdSetupType(); if (nResult = BACK) goto Dlg_SdAskDestPath; Dlg_SdComponentDialog2: if ((nResult = BACK) && (svSetupType != "Custom") && (svSetupType != "")) then goto Dlg_SdSetupType; endif; nResult = DialogShowSdComponentDialog2(); if (nResult = BACK) goto Dlg_SdSetupType; return 0; end;///////////////////////////////////////////////////////////////////////////////// //// Function: ProcessBeforeDataMove //// //// Purpose: This function performs any necessary operations prior to the //// actual data move operation. //// /////////////////////////////////////////////////////////////////////////////////function ProcessBeforeDataMove() STRING svLogFile; NUMBER nResult; begin InstallationInfo( @COMPANY_NAME, @PRODUCT_NAME, @PRODUCT_VERSION, @PRODUCT_KEY ); svLogFile = UNINST_LOGFILE_NAME; nResult = DeinstallStart( svDir, svLogFile, @UNINST_KEY, 0 ); if (nResult < 0) then MessageBox( @ERROR_UNINSTSETUP, WARNING ); endif; szAppPath = TARGETDIR; // TODO : if your application .exe is in a subdir of TARGETDIR then add subdir if ((bIs32BitSetup) && (bIsShellExplorer)) then RegDBSetItem( REGDB_APPPATH, szAppPath ); RegDBSetItem( REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY ); RegDBSetItem( REGDB_UNINSTALL_NAME, @UNINST_DISPLAY_NAME ); endif; // TODO : update any items you want to process before moving the data // return 0; end;///////////////////////////////////////////////////////////////////////////////// //// Function: MoveFileData //// //// Purpose: This function handles the data movement for //// the setup. //// /////////////////////////////////////////////////////////////////////////////////function MoveFileData() NUMBER nResult, nDisk; begin nDisk = 1; SetStatusWindow( 0, "" ); Disable( DIALOGCACHE ); Enable( STATUS ); StatusUpdate( ON, 100 ); nResult = ComponentMoveData( MEDIA, nDisk, 0 ); HandleMoveDataError( nResult ); Disable( STATUS ); return nResult; end;///////////////////////////////////////////////////////////////////////////////// //// Function: HandleMoveDataError //// //// Purpose: This function handles the error (if any) during the move data //// operation. //// /////////////////////////////////////////////////////////////////////////////////function HandleMoveDataError( nResult ) STRING szErrMsg, svComponent , svFileGroup , svFile; begin svComponent = ""; svFileGroup = ""; svFile = ""; switch (nResult) case 0: return 0; default: ComponentError ( MEDIA , svComponent , svFileGroup , svFile , nResult ); szErrMsg = @ERROR_MOVEDATA + "\n\n" + @ERROR_COMPONENT + " " + svComponent + "\n" + @ERROR_FILEGROUP + " " + svFileGroup + "\n" + @ERROR_FILE + " " + svFile; SprintfBox( SEVERE, @TITLE_CAPTIONBAR, szErrMsg, nResult ); bInstallAborted = TRUE; return nResult; endswitch; end;///////////////////////////////////////////////////////////////////////////////// //// Function: ProcessAfterDataMove //// //// Purpose: This function performs any necessary operations needed after //// all data has been moved. //// /////////////////////////////////////////////////////////////////////////////////function ProcessAfterDataMove() begin // TODO : update self-registered files and other processes that // should be performed after the data has been moved. return 0; end;///////////////////////////////////////////////////////////////////////////////// //// Function: SetupRegistry //// //// Purpose: This function makes the registry entries for this setup. //// /////////////////////////////////////////////////////////////////////////////////function SetupRegistry() NUMBER nResult; begin // TODO : Add all your registry entry keys here // // // RegDBCreateKeyEx, RegDBSetKeyValueEx.... // nResult = CreateRegistrySet( "" ); return nResult; end;/////////////////////////////////////////////////////////////////////////////////// Function: SetupFolders//// Purpose: This function creates all the folders and shortcuts for the// setup. This includes program groups and items for Windows 3.1./////////////////////////////////////////////////////////////////////////////////function SetupFolders() NUMBER nResult; begin // TODO : Add all your folder (program group) along with shortcuts (program items) // // // CreateProgramFolder, AddFolderIcon....
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -