Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
732 lines
24 KiB
Plaintext
732 lines
24 KiB
Plaintext
VERSION 5.00
|
|
Begin VB.Form frmSetup1
|
|
AutoRedraw = -1 'True
|
|
BackColor = &H00400000&
|
|
BorderStyle = 0 'None
|
|
ClientHeight = 1770
|
|
ClientLeft = 225
|
|
ClientTop = 1590
|
|
ClientWidth = 7950
|
|
ClipControls = 0 'False
|
|
DrawStyle = 5 'Transparent
|
|
FillStyle = 0 'Solid
|
|
BeginProperty Font
|
|
Name = "Times New Roman"
|
|
Size = 24
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = -1 'True
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
ForeColor = &H00000000&
|
|
HasDC = 0 'False
|
|
Icon = "setup1.frx":0000
|
|
LockControls = -1 'True
|
|
MaxButton = 0 'False
|
|
MinButton = 0 'False
|
|
NegotiateMenus = 0 'False
|
|
PaletteMode = 1 'UseZOrder
|
|
ScaleHeight = 118
|
|
ScaleMode = 3 'Pixel
|
|
ScaleWidth = 530
|
|
WindowState = 2 'Maximized
|
|
Begin VB.Label lblModify
|
|
AutoSize = -1 'True
|
|
BorderStyle = 1 'Fixed Single
|
|
Caption = $"setup1.frx":0442
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 8.25
|
|
Charset = 0
|
|
Weight = 400
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 450
|
|
Left = 15
|
|
TabIndex = 1
|
|
Top = 15
|
|
Visible = 0 'False
|
|
Width = 7860
|
|
WordWrap = -1 'True
|
|
End
|
|
Begin VB.Label lblDDE
|
|
AutoSize = -1 'True
|
|
BorderStyle = 1 'Fixed Single
|
|
Caption = "This label is used for DDE connection to the Program Manager"
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 8.25
|
|
Charset = 0
|
|
Weight = 400
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 255
|
|
Left = 15
|
|
TabIndex = 0
|
|
Top = 1515
|
|
Visible = 0 'False
|
|
Width = 4485
|
|
End
|
|
End
|
|
Attribute VB_Name = "frmSetup1"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = False
|
|
Attribute VB_PredeclaredId = True
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
|
|
'
|
|
' Can't put this is a resource because it indicated resource load failure, must localize separately
|
|
'
|
|
Private Const mstrRESOURCELOADFAIL$ = "An error occurred while initializing string resources used by Setup."
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: DrawBackGround
|
|
'
|
|
' Draws the 'blue wash' screen and prints the 'shadowed'
|
|
' app setup title
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub DrawBackGround()
|
|
Const intBLUESTART% = 255
|
|
Const intBLUEEND% = 0
|
|
Const intBANDHEIGHT% = 2
|
|
Const intSHADOWSTART% = 8
|
|
Const intSHADOWCOLOR% = 0
|
|
Const intTEXTSTART% = 4
|
|
Const intTEXTCOLOR% = 15
|
|
Const intRed% = 1
|
|
Const intGreen% = 2
|
|
Const intBlue% = 4
|
|
Const intBackRed% = 8
|
|
Const intBackGreen% = 16
|
|
Const intBackBlue% = 32
|
|
Dim sngBlueCur As Single
|
|
Dim sngBlueStep As Single
|
|
Dim intFormHeight As Integer
|
|
Dim intFormWidth As Integer
|
|
Dim intY As Integer
|
|
Dim iColor As Integer
|
|
Dim iRed As Single, iBlue As Single, iGreen As Single
|
|
|
|
'
|
|
'Get system values for height and width
|
|
'
|
|
intFormHeight = ScaleHeight
|
|
intFormWidth = ScaleWidth
|
|
|
|
If Len(ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_COLOR)) = 0 Then
|
|
iColor = intBlue
|
|
Else
|
|
iColor = CInt(ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_COLOR))
|
|
End If
|
|
'Calculate step size and blue start value
|
|
'
|
|
sngBlueStep = intBANDHEIGHT * (intBLUEEND - intBLUESTART) / intFormHeight
|
|
sngBlueCur = intBLUESTART
|
|
|
|
'
|
|
'Paint blue screen
|
|
'
|
|
For intY = 0 To intFormHeight Step intBANDHEIGHT
|
|
If iColor And intBlue Then iBlue = sngBlueCur
|
|
If iColor And intRed Then iRed = sngBlueCur
|
|
If iColor And intGreen Then iGreen = sngBlueCur
|
|
If iColor And intBackBlue Then iBlue = 255 - sngBlueCur
|
|
If iColor And intBackRed Then iRed = 255 - sngBlueCur
|
|
If iColor And intBackGreen Then iGreen = 255 - sngBlueCur
|
|
Line (-1, intY - 1)-(intFormWidth, intY + intBANDHEIGHT), RGB(iRed, iGreen, iBlue), BF
|
|
sngBlueCur = sngBlueCur + sngBlueStep
|
|
Next intY
|
|
|
|
'
|
|
'Print 'shadowed' appname
|
|
'
|
|
CurrentX = intSHADOWSTART
|
|
CurrentY = intSHADOWSTART
|
|
ForeColor = QBColor(intSHADOWCOLOR)
|
|
Print Caption
|
|
CurrentX = intTEXTSTART
|
|
CurrentY = intTEXTSTART
|
|
ForeColor = QBColor(intTEXTCOLOR)
|
|
Print Caption
|
|
End Sub
|
|
Private Sub Form_Load()
|
|
'
|
|
' Most of the work for Setup1 takes place in Form_Load()
|
|
' and is mostly driven by the information found in the
|
|
' SETUP.LST file. To customize the Setup1 functionality,
|
|
' you will generally want to modify SETUP.LST.
|
|
' Particularly, information regarding the files you are
|
|
' installing is all stored in SETUP.LST. Exceptions include
|
|
' the Remote Automation files RacMgr32.Exe and AutMgr32.Exe
|
|
' and special redistributable packages such as mdac_typ.exe.
|
|
' These require special handling below.
|
|
'
|
|
' Some customization can also be done by editing the code
|
|
' below in Form_Load or in other parts of this program.
|
|
' Places that are more likely to need customization are
|
|
' documented with suggestions and examples in the code.
|
|
'
|
|
|
|
'
|
|
'Uncomment these three lines for debugging. To debug:
|
|
'1) Rebuild Setup1.exe and rebuild the cab file
|
|
' to include the new Setup1.exe.
|
|
'2) Run setup.exe against the new cab
|
|
'3) When the message box appears, open the Setup1 project
|
|
' in VB, paste the command line from the clipboard into the
|
|
' Project/Properties/Make/Command Line Arguments field.
|
|
'4) F5 in VB.
|
|
'
|
|
'Clipboard.Clear
|
|
'Clipboard.SetText Command$
|
|
'MsgBox Command$
|
|
|
|
Const fDefCreateGroupUnderWin95 = False
|
|
|
|
Dim strGroupName As String 'Name of Program Group
|
|
Dim oFont As StdFont
|
|
Dim lChar As Long
|
|
Dim cIcons As Integer ' Count of how many icons are required.
|
|
Dim cGroups As Integer ' Count of how many groups are required.
|
|
Dim fCreateGroup As Boolean
|
|
|
|
Dim iLoop As Integer
|
|
Dim sUCASEStartMenuKey As String
|
|
Dim sUCASEProgramsMenuKey As String
|
|
Dim sGroup As String
|
|
|
|
Dim strRemAutGroupName As String
|
|
|
|
Dim strPerAppPath As String
|
|
|
|
Dim iRet As Integer
|
|
|
|
gfRegDAO = False
|
|
|
|
On Error GoTo MainError
|
|
|
|
SetFormFont Me
|
|
'All the controls and the form are sharing the
|
|
'same font object, so create a new font object
|
|
'for the form so that the appearance of all the
|
|
'controls are not changed also
|
|
Set oFont = New StdFont
|
|
With oFont
|
|
.Size = 24
|
|
.Bold = True
|
|
.Italic = True
|
|
.Charset = lblModify.Font.Charset
|
|
.Name = lblModify.Font.Name
|
|
End With
|
|
Set Font = oFont
|
|
'
|
|
'Initialize string resources used by global vars and forms/controls
|
|
'
|
|
GetStrings
|
|
|
|
'
|
|
'Get Windows, Windows\Fonts, and Windows\System directories
|
|
'
|
|
gstrWinDir = GetWindowsDir()
|
|
gstrWinSysDir = GetWindowsSysDir()
|
|
gstrFontDir = GetWindowsFontDir()
|
|
|
|
'
|
|
' If the Windows System directory is a subdirectory of the
|
|
' Windows directory, the proper place for installation of
|
|
' files specified in the setup.lst as $(WinSysDest) is always
|
|
' the Windows \System directory. If the Windows \System
|
|
' directory is *not* a subdirectory of the Windows directory,
|
|
' then the user is running a shared version of Windows. In
|
|
' this case, if the user does not have write access to the
|
|
' shared system directory, we change the system files
|
|
' destination to the windows directory
|
|
'
|
|
' Avoid Option Compare Text and use explicit UCase comparisons because there
|
|
' is a Unicode character (&H818F) which is equal to a path separator when
|
|
' using Option Compare Text.
|
|
If InStr(UCase$(gstrWinSysDir), UCase$(gstrWinDir)) <> 1 Then
|
|
If Not WriteAccess(gstrWinSysDir) Then
|
|
gstrWinSysDir = gstrWinDir
|
|
End If
|
|
End If
|
|
|
|
'
|
|
' The command-line arguments must be processed as early
|
|
' as possible, because without them it is impossible to
|
|
' call the app removal program to clean up after an aborted
|
|
' setup.
|
|
'
|
|
#If SMS Then
|
|
ProcessCommandLine Command$, gfSilent, gstrSilentLog, gfSMS, gstrMIFFile, gstrSrcPath, gstrAppRemovalLog, gstrAppRemovalEXE
|
|
gfNoUserInput = (gfSilent Or gfSMS)
|
|
#Else
|
|
ProcessCommandLine Command$, gfSilent, gstrSilentLog, gstrSrcPath, gstrAppRemovalLog, gstrAppRemovalEXE
|
|
gfNoUserInput = gfSilent
|
|
#End If
|
|
|
|
AddDirSep gstrSrcPath
|
|
|
|
'
|
|
' The Setup Bootstrapper (SETUP.EXE) copies SETUP1.EXE and SETUP.LST to
|
|
' the end user's windows directory. Information required for setup such
|
|
' as setup flags and fileinfo is read from the copy of SETUP.LST found in
|
|
' that directory.
|
|
'
|
|
gstrSetupInfoFile = gstrWinDir & gstrFILE_SETUP
|
|
'Get the Appname (this will be shown on the blue wash screen)
|
|
gstrAppName = ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_APPNAME)
|
|
gintCabs = CInt(ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gstrINI_CABS))
|
|
If Len(gstrAppName) = 0 Then
|
|
MsgError ResolveResString(resNOSETUPLST), vbOKOnly Or vbCritical, gstrSETMSG
|
|
gstrTitle = ResolveResString(resSETUP, gstrPIPE1, gstrAppName)
|
|
ExitSetup Me, gintRET_FATAL
|
|
End If
|
|
|
|
gstrAppExe = ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_APPEXE)
|
|
gstrTitle = ResolveResString(resSETUP, gstrPIPE1, gstrAppName)
|
|
If gfSilent Then LogSilentMsg gstrTitle & vbCrLf
|
|
|
|
'Get a temporary directory to use
|
|
gsTEMPDIR = String$(255, 0)
|
|
lChar = GetTempPath(255, gsTEMPDIR)
|
|
gsTEMPDIR = Left$(gsTEMPDIR, lChar)
|
|
AddDirSep gsTEMPDIR
|
|
gsTEMPDIR = gsTEMPDIR & ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gsINI_TEMPDIR)
|
|
AddDirSep gsTEMPDIR
|
|
'
|
|
' Get the name of the CAB
|
|
'
|
|
gsCABFULLNAME = gstrWinDir & ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gstrINI_CABNAME)
|
|
'
|
|
' Display the background "blue-wash" setup screen as soon as we get the title
|
|
'
|
|
ShowMainForm
|
|
'
|
|
' Display the welcome dialog
|
|
'
|
|
ShowWelcomeForm
|
|
'
|
|
' If this flag is set, then the default destination directory is used
|
|
' without question, and the user is never given a chance to change it.
|
|
' This is intended for installing an .EXE/.DLL as a component rather
|
|
' than as an application in an application directory. In this case,
|
|
' having an application directory does not really make sense.
|
|
'
|
|
|
|
If ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_FORCEUSEDEFDEST) = "1" Then
|
|
gfForceUseDefDest = True
|
|
End If
|
|
'
|
|
' Read default destination directory. If the name specified conflicts
|
|
' with the name of a file, then prompt for a new default directory
|
|
'
|
|
gstrDestDir = ResolveDestDir(ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_APPDIR))
|
|
Do While FileExists(gstrDestDir) Or Len(gstrDestDir) = 0
|
|
If MsgError(ResolveResString(resBADDEFDIR), vbOKCancel Or vbQuestion, gstrSETMSG) = vbCancel Then
|
|
ExitSetup Me, gintRET_FATAL
|
|
End If
|
|
|
|
If gfNoUserInput Then
|
|
ExitSetup Me, gintRET_FATAL
|
|
Else
|
|
ShowPathDialog
|
|
End If
|
|
Loop
|
|
'
|
|
' Ensure a trailing backslash on the destination directory
|
|
'
|
|
AddDirSep gstrDestDir
|
|
|
|
Do
|
|
'
|
|
' Display install button and default directory. The user
|
|
' can change the destination directory from here.
|
|
'
|
|
ShowBeginForm
|
|
'
|
|
' This would be a good place to display an option dialog, allowing the user
|
|
' a chance to select installation options: samples, docs, help files, etc.
|
|
' Results of this dialog would be checked in the loop below
|
|
'
|
|
'ShowOptionsDialog (Function you could write with option check boxes, etc.)
|
|
'
|
|
|
|
'
|
|
' Initialize "table" of drives used and disk space array
|
|
'
|
|
InitDiskInfo
|
|
|
|
SetMousePtr vbHourglass
|
|
ShowStaticMessageDialog ResolveResString(resDISKSPACE)
|
|
'
|
|
' For every section in SETUP.LST that will be installed, call CalcDiskSpace
|
|
' with the name of the section
|
|
'
|
|
CalcDiskSpace gstrINI_FILES
|
|
'CalcDiskSpace "MySection"
|
|
'CalcDiskSpace "MyOtherSection"
|
|
'
|
|
' If you created an options dialog, you need to check results here to
|
|
' determine whether disk space needs to be calculated (if the option(s)
|
|
' will be installed)
|
|
'
|
|
'If chkInstallSamples.Value then
|
|
' CalcDiskSpace "Samples"
|
|
'End If
|
|
'
|
|
|
|
HideStaticMessageDialog
|
|
SetMousePtr vbDefault
|
|
|
|
'
|
|
' After all CalcDiskSpace calls are complete, call CheckDiskSpace to check
|
|
' the results and display warning form (if necessary). If the user wants
|
|
' to try another destination directory (or cleanup and retry) then
|
|
' CheckDiskSpace will return False
|
|
'
|
|
Loop Until CheckDiskSpace()
|
|
'
|
|
' Starts logging to the setup logfile (will be used for application removal)
|
|
'
|
|
EnableLogging gstrAppRemovalLog
|
|
'
|
|
' Should go ahead and force the application directory to be created,
|
|
' since the application removal logfile will later be copied there.
|
|
'
|
|
MakePath gstrDestDir, False 'User may not ignore errors here
|
|
'
|
|
' Create the main program group if one is wanted/needed.
|
|
'
|
|
'
|
|
' If fDefCreateGroupUnderWin95 is set to False (this is the default), then no
|
|
' program group will be created under Win95 unless it is absolutely necessary.
|
|
'
|
|
' By default under Windows 95, no group should be created, and the
|
|
' single program icon should be placed directly under the
|
|
' Start>Programs menu (unless there are other, user-defined icons to create
|
|
'
|
|
'
|
|
' Read through the SETUP.LST file and determine how many icons are needed.
|
|
'
|
|
cIcons = CountIcons(gsICONGROUP)
|
|
cGroups = CountGroups(gsICONGROUP)
|
|
'
|
|
' Do the same for other sections in SETUP.LST if you've added your own.
|
|
'
|
|
'cIcons = cIcons + CountIcons("MySection")
|
|
'cIcons = cIcons + CountIcons("MyOtherSection")
|
|
|
|
'
|
|
' The following variable determines whether or not we create a program
|
|
' group for icons. It is controlled by fNoGroupUnderWin95,
|
|
' fAdditionalIcons, and FTreatAsWin95().
|
|
'
|
|
fCreateGroup = (cGroups > 0)
|
|
|
|
If fCreateGroup Then
|
|
For iLoop = 0 To cGroups - 1
|
|
sGroup = GetGroup(gsICONGROUP, iLoop)
|
|
strGroupName = vbNullString
|
|
Select Case UCase$(sGroup)
|
|
Case UCase$(gsSTARTMENUKEY), UCase$(gsPROGMENUKEY)
|
|
' Skip start menu and programs - they're already there and don't
|
|
' need to be created.
|
|
Case Else
|
|
strGroupName = frmGroup.GroupName(frmSetup1, sGroup, GetPrivate(gsICONGROUP, iLoop), GetStart(gsICONGROUP, iLoop))
|
|
If UCase$(sGroup) <> UCase$(strGroupName) Then
|
|
SetGroup gsICONGROUP, iLoop, strGroupName
|
|
End If
|
|
End Select
|
|
fMainGroupWasCreated = True
|
|
Next
|
|
End If
|
|
|
|
' Before we begin copying files, check for mdac_typ
|
|
' and if we find it, spawn that off first. We will tell
|
|
' it to never reboot, and check at the end to see if we need to.
|
|
DoEvents
|
|
If CheckDataAccess Then
|
|
'We need to install data access. Display message.
|
|
ShowStaticMessageDialog ResolveResString(resINSTALLADO)
|
|
InstallDataAccess
|
|
HideStaticMessageDialog
|
|
End If
|
|
'
|
|
' Show copy form and set copy gauge percentage to zero
|
|
'
|
|
SetMousePtr vbHourglass
|
|
ShowCopyDialog
|
|
UpdateStatus frmCopy.picStatus, 0, True
|
|
'
|
|
' Always start with Disk #1
|
|
'
|
|
gintCurrentDisk = 1
|
|
'
|
|
' For every section in SETUP.LST that needs to be installed, call CopySection
|
|
' with the name of the section
|
|
'
|
|
|
|
CopySection gstrINI_FILES
|
|
'CopySection "MySection"
|
|
'CopySection "MyOtherSection"
|
|
|
|
'
|
|
' If you created an options dialog, you need to check results here to
|
|
' determine whether to copy the files in the particular section(s).
|
|
'
|
|
'If chkInstallSamples.Value then
|
|
' CopySection "Samples"
|
|
'End If
|
|
'
|
|
UpdateStatus frmCopy.picStatus, 1, True
|
|
|
|
HideCopyDialog
|
|
'
|
|
' Now, do all the 'invisible' update things that are required
|
|
'
|
|
SetMousePtr vbDefault
|
|
ShowStaticMessageDialog ResolveResString(resUPDATING)
|
|
'
|
|
' Register all the files that have been saved in the registration array. The
|
|
' CopySection API adds a registration entry (when required) if a file is copied.
|
|
'
|
|
RegisterFiles
|
|
'
|
|
' Register all the licenses that appear in the [Licenses] section of
|
|
' Setup.lst.
|
|
'
|
|
RegisterLicenses
|
|
'
|
|
' If any DAO files were installed, we need to add some special
|
|
' keys to the registry to support it so that links will work
|
|
' in OLE Database fields.
|
|
'
|
|
If gfRegDAO Then
|
|
RegisterDAO
|
|
End If
|
|
CheckForAndInstallDirectX gstrINI_FILES, Me.hWnd
|
|
|
|
'
|
|
' Create program icons (or links, i.e. shortcuts).
|
|
'
|
|
If fMainGroupWasCreated Or (cIcons > 0) Then
|
|
ShowStaticMessageDialog ResolveResString(resPROGMAN)
|
|
CreateIcons gsICONGROUP
|
|
'
|
|
' Do the same for other sections in SETUP.LST if you've added your own.
|
|
'
|
|
'CreateIcons "MySection"
|
|
'CreateIcons "MyOtherSection"
|
|
'
|
|
End If
|
|
'
|
|
' Create a separate program group and icons for the Remote Automation
|
|
' Connection Manager and the Automation Manager, if either has been
|
|
' installed.
|
|
' This program group is entirely separate from the one created for the
|
|
' application program (if any), because it will be shared by all
|
|
' VB applications which install them.
|
|
'
|
|
' NOTE: This is NOT the place to install additional icons. This is
|
|
' NOTE: handled after the Remote Automation icons have been created.
|
|
'
|
|
ShowStaticMessageDialog ResolveResString(resPROGMAN)
|
|
If Len(gsDest.strAUTMGR32) > 0 Or Len(gsDest.strRACMGR32) > 0 Then
|
|
'At least one of these programs was installed. Go ahead
|
|
'and create the program group.
|
|
strRemAutGroupName = ResolveResString(resREMAUTGROUPNAME)
|
|
'
|
|
' Create the group for the Remote Automation Icons. Note that
|
|
' since the user cannot choose the name of this group, there is
|
|
' no way at this point to correct an error if one occurs. Therefore,
|
|
' fCreateShellGroup will abort setup, without returning, if there
|
|
' is an error.
|
|
'
|
|
fCreateShellGroup strRemAutGroupName, False, False
|
|
|
|
'Now create the icons for AUTMGR32.EXE and RACMGR32.EXE
|
|
If Len(gsDest.strRACMGR32) > 0 Then
|
|
CreateShellLink gsDest.strRACMGR32, strRemAutGroupName, vbNullString, ResolveResString(resRACMGR32ICON), True, gsPROGMENUKEY, False
|
|
End If
|
|
If Len(gsDest.strAUTMGR32) > 0 Then
|
|
CreateShellLink gsDest.strAUTMGR32, strRemAutGroupName, vbNullString, ResolveResString(resAUTMGR32ICON), True, gsPROGMENUKEY, False
|
|
End If
|
|
End If
|
|
'
|
|
'Register the per-app path
|
|
'
|
|
If Len(gstrAppExe) > 0 Then
|
|
strPerAppPath = ReadIniFile(gstrSetupInfoFile, gstrINI_SETUP, gstrINI_APPPATH)
|
|
AddPerAppPath gstrAppExe, gsDest.strAppDir, strPerAppPath
|
|
End If
|
|
|
|
ExitSetup:
|
|
HideStaticMessageDialog
|
|
If fWithinAction() Then
|
|
'By now, all logging actions should have been either aborted or committed.
|
|
MsgError ResolveResString(resSTILLWITHINACTION), vbExclamation Or vbOKOnly, gstrTitle
|
|
ExitSetup Me, gintRET_FATAL
|
|
End If
|
|
MoveAppRemovalFiles strGroupName
|
|
|
|
ExitSetup Me, gintRET_FINISHEDSUCCESS
|
|
|
|
MainError:
|
|
iRet = MsgError(Err.Description & vbLf & vbLf & ResolveResString(resUNEXPECTED), vbRetryCancel Or vbExclamation, gstrTitle)
|
|
If gfNoUserInput Then iRet = vbCancel
|
|
Select Case iRet
|
|
Case vbRetry
|
|
Resume
|
|
Case vbCancel
|
|
ExitSetup Me, gintRET_ABORT
|
|
Resume
|
|
End Select
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: HideCopyDialog
|
|
'
|
|
' Unloads the copy files status form
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub HideCopyDialog()
|
|
Unload frmCopy
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: HideStaticMessageDialog
|
|
'
|
|
' Unloads the setup messages form
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub HideStaticMessageDialog()
|
|
Unload frmMessage
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: ShowBeginForm
|
|
'
|
|
' Displays the begin setup form
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub ShowBeginForm()
|
|
If gfNoUserInput Then
|
|
If Not IsValidDestDir(gstrDestDir) Then
|
|
ExitSetup frmSetup1, gintRET_FATAL
|
|
End If
|
|
Else
|
|
frmBegin.Show vbModal
|
|
End If
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: ShowCopyDialog
|
|
'
|
|
' Displays the copy files status form
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub ShowCopyDialog()
|
|
CenterForm frmCopy
|
|
If gfNoUserInput Then
|
|
frmCopy.cmdExit.Visible = False
|
|
End If
|
|
frmCopy.Show
|
|
frmCopy.Refresh
|
|
If frmCopy.cmdExit.Visible Then
|
|
frmCopy.cmdExit.SetFocus
|
|
End If
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: ShowMainForm
|
|
'
|
|
' Displays the main setup 'blue wash' form
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub ShowMainForm()
|
|
Caption = gstrTitle
|
|
Show
|
|
DrawBackGround
|
|
Refresh
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: ShowStaticMessageDialog
|
|
'
|
|
' Displays a setup message in a 'box' of the appropriate
|
|
' size for the message
|
|
'
|
|
' IN: [strMessage] - message to display
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub ShowStaticMessageDialog(ByVal strMessage As String)
|
|
Dim frm As Form
|
|
|
|
Set frm = frmMessage
|
|
frm.lblMsg.Caption = strMessage
|
|
|
|
'
|
|
'Default height is twice the height of the setup icon.
|
|
'If the height of the message text is greater, then
|
|
'increase the form height to the label height plus
|
|
'half an icon height
|
|
'
|
|
frm.ScaleHeight = frm.imgMsg.Height * 2
|
|
If frm.lblMsg.Height > frm.ScaleHeight Then
|
|
frm.ScaleHeight = frm.lblMsg.Height + frm.imgMsg.Height * 0.5
|
|
End If
|
|
|
|
'
|
|
'Vertically center the icon and label within the form
|
|
'
|
|
frm.imgMsg.Top = frm.ScaleHeight / 2 - frm.imgMsg.Height / 2
|
|
frm.lblMsg.Top = frm.ScaleHeight / 2 - frm.lblMsg.Height / 2
|
|
|
|
CenterForm frm
|
|
|
|
frm.Show
|
|
frm.Refresh
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: ShowWelcomeForm
|
|
'
|
|
' Displays the welcome to setup form
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub ShowWelcomeForm()
|
|
If Not gfNoUserInput Then
|
|
frmWelcome.Show vbModal
|
|
End If
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------
|
|
' SUB: GetStrings
|
|
'
|
|
' Loads string resources into global vars and forms/controls
|
|
'-----------------------------------------------------------
|
|
'
|
|
Private Sub GetStrings()
|
|
On Error GoTo GSErr
|
|
|
|
gstrSETMSG = ResolveResString(resSETMSG)
|
|
|
|
Exit Sub
|
|
|
|
GSErr:
|
|
MsgError mstrRESOURCELOADFAIL, vbCritical Or vbOKOnly, vbNullString
|
|
ExitSetup Me, gintRET_FATAL
|
|
End Sub
|
|
|
|
Private Sub Form_Unload(Cancel As Integer)
|
|
CleanUpCabs
|
|
End Sub
|