mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
9cc393f6e4
-WorkSpace and Project Files for VC++6.0 -InstallShield Files for setup program.
640 lines
21 KiB
Text
640 lines
21 KiB
Text
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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....
|
|
//
|
|
|
|
nResult = CreateShellObjects( "" );
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: CleanUpInstall //
|
|
// //
|
|
// Purpose: This cleans up the setup. Anything that should //
|
|
// be released or deleted at the end of the setup should //
|
|
// be done here. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function CleanUpInstall()
|
|
begin
|
|
|
|
|
|
if (bInstallAborted) then
|
|
return 0;
|
|
endif;
|
|
|
|
DialogShowSdFinishReboot();
|
|
|
|
if (BATCH_INSTALL) then // ensure locked files are properly written
|
|
CommitSharedFiles(0);
|
|
endif;
|
|
|
|
return 0;
|
|
end;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: SetupInstall //
|
|
// //
|
|
// Purpose: This will setup the installation. Any general initialization //
|
|
// needed for the installation should be performed here. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function SetupInstall()
|
|
begin
|
|
|
|
Enable( CORECOMPONENTHANDLING );
|
|
|
|
bInstallAborted = FALSE;
|
|
|
|
if (bIs32BitSetup) then
|
|
svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME;
|
|
else
|
|
svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME16 ^ @PRODUCT_NAME16; // use shorten names
|
|
endif;
|
|
|
|
TARGETDIR = svDir;
|
|
|
|
SdProductName( @PRODUCT_NAME );
|
|
|
|
Enable( DIALOGCACHE );
|
|
|
|
return 0;
|
|
end;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: SetupScreen //
|
|
// //
|
|
// Purpose: This function establishes the screen look. This includes //
|
|
// colors, fonts, and text to be displayed. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function SetupScreen()
|
|
begin
|
|
|
|
Enable( FULLWINDOWMODE );
|
|
Enable( INDVFILESTATUS );
|
|
SetTitle( @TITLE_MAIN, 24, WHITE );
|
|
|
|
SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Caption bar text.
|
|
|
|
Enable( BACKGROUND );
|
|
|
|
Delay( 1 );
|
|
end;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: CheckRequirements //
|
|
// //
|
|
// Purpose: This function checks all minimum requirements for the //
|
|
// application being installed. If any fail, then the user //
|
|
// is informed and the setup is terminated. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function CheckRequirements()
|
|
NUMBER nvDx, nvDy, nvResult;
|
|
STRING svResult;
|
|
|
|
begin
|
|
|
|
bWinNT = FALSE;
|
|
bIsShellExplorer = FALSE;
|
|
|
|
// Check screen resolution.
|
|
GetExtents( nvDx, nvDy );
|
|
|
|
if (nvDy < 480) then
|
|
MessageBox( @ERROR_VGARESOLUTION, WARNING );
|
|
abort;
|
|
endif;
|
|
|
|
// set 'setup' operation mode
|
|
bIs32BitSetup = TRUE;
|
|
GetSystemInfo( ISTYPE, nvResult, svResult );
|
|
if (nvResult = 16) then
|
|
bIs32BitSetup = FALSE; // running 16-bit setup
|
|
return 0; // no additional information required
|
|
endif;
|
|
|
|
// --- 32-bit testing after this point ---
|
|
|
|
// Determine the target system's operating system.
|
|
GetSystemInfo( OS, nvResult, svResult );
|
|
|
|
if (nvResult = IS_WINDOWSNT) then
|
|
// Running Windows NT.
|
|
bWinNT = TRUE;
|
|
|
|
// Check to see if the shell being used is EXPLORER shell.
|
|
if (GetSystemInfo( OSMAJOR, nvResult, svResult ) = 0) then
|
|
if (nvResult >= 4) then
|
|
bIsShellExplorer = TRUE;
|
|
endif;
|
|
endif;
|
|
|
|
elseif (nvResult = IS_WINDOWS95 ) then
|
|
bIsShellExplorer = TRUE;
|
|
|
|
endif;
|
|
|
|
end;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: DialogShowSdWelcome //
|
|
// //
|
|
// Purpose: This function handles the standard welcome dialog. //
|
|
// //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function DialogShowSdWelcome()
|
|
NUMBER nResult;
|
|
STRING szTitle, szMsg;
|
|
begin
|
|
|
|
szTitle = "";
|
|
szMsg = "";
|
|
nResult = SdWelcome( szTitle, szMsg );
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: DialogShowSdShowInfoList //
|
|
// //
|
|
// Purpose: This function displays the general information list dialog. //
|
|
// //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function DialogShowSdShowInfoList()
|
|
NUMBER nResult;
|
|
LIST list;
|
|
STRING szTitle, szMsg, szFile;
|
|
begin
|
|
|
|
szFile = SUPPORTDIR ^ "infolist.txt";
|
|
|
|
list = ListCreate( STRINGLIST );
|
|
ListReadFromFile( list, szFile );
|
|
szTitle = "";
|
|
szMsg = " ";
|
|
nResult = SdShowInfoList( szTitle, szMsg, list );
|
|
|
|
ListDestroy( list );
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: DialogShowSdAskDestPath //
|
|
// //
|
|
// Purpose: This function asks the user for the destination directory. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function DialogShowSdAskDestPath()
|
|
NUMBER nResult;
|
|
STRING szTitle, szMsg;
|
|
begin
|
|
|
|
szTitle = "";
|
|
szMsg = "";
|
|
nResult = SdAskDestPath( szTitle, szMsg, svDir, 0 );
|
|
|
|
TARGETDIR = svDir;
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: DialogShowSdSetupType //
|
|
// //
|
|
// Purpose: This function displays the standard setup type dialog. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function DialogShowSdSetupType()
|
|
NUMBER nResult, nType;
|
|
STRING szTitle, szMsg;
|
|
begin
|
|
|
|
switch (svSetupType)
|
|
case "Typical":
|
|
nType = TYPICAL;
|
|
case "Custom":
|
|
nType = CUSTOM;
|
|
case "Compact":
|
|
nType = COMPACT;
|
|
case "":
|
|
svSetupType = "Typical";
|
|
nType = TYPICAL;
|
|
endswitch;
|
|
|
|
szTitle = "";
|
|
szMsg = "";
|
|
nResult = SetupType( szTitle, szMsg, "", nType, 0 );
|
|
|
|
switch (nResult)
|
|
case COMPACT:
|
|
svSetupType = "Compact";
|
|
case TYPICAL:
|
|
svSetupType = "Typical";
|
|
case CUSTOM:
|
|
svSetupType = "Custom";
|
|
endswitch;
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: DialogShowSdComponentDialog2 //
|
|
// //
|
|
// Purpose: This function displays the custom component dialog. //
|
|
// //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function DialogShowSdComponentDialog2()
|
|
NUMBER nResult;
|
|
STRING szTitle, szMsg;
|
|
begin
|
|
|
|
if ((svSetupType != "Custom") && (svSetupType != "")) then
|
|
return 0;
|
|
endif;
|
|
|
|
szTitle = "";
|
|
szMsg = "";
|
|
nResult = SdComponentDialog2( szTitle, szMsg, svDir, "" );
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Function: DialogShowSdFinishReboot //
|
|
// //
|
|
// Purpose: This function will show the last dialog of the product. //
|
|
// It will allow the user to reboot and/or show some readme text. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
function DialogShowSdFinishReboot()
|
|
NUMBER nResult, nDefOptions;
|
|
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
|
|
NUMBER bOpt1, bOpt2;
|
|
begin
|
|
|
|
if (!BATCH_INSTALL) then
|
|
bOpt1 = FALSE;
|
|
bOpt2 = FALSE;
|
|
szMsg1 = "";
|
|
szMsg2 = "";
|
|
szOption1 = "";
|
|
szOption2 = "";
|
|
nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 );
|
|
return 0;
|
|
endif;
|
|
|
|
nDefOptions = SYS_BOOTMACHINE;
|
|
szTitle = "";
|
|
szMsg1 = "";
|
|
szMsg2 = "";
|
|
nResult = SdFinishReboot( szTitle, szMsg1, nDefOptions, szMsg2, 0 );
|
|
|
|
return nResult;
|
|
end;
|
|
|
|
// --- include script file section ---
|
|
|
|
#include "sddialog.rul"
|
|
|
|
|