| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /***********************************************************************************************
- *** Confidential - Westwood Studios ***
- ***********************************************************************************************
- * *
- * Project Name : Installer *
- * *
- * $Archive:: /Commando/Code/Installer/Installer.h $*
- * *
- * $Author:: Ian_l $*
- * *
- * $Modtime:: 1/17/02 5:01p $*
- * *
- * $Revision:: 13 $*
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #ifndef _INSTALLER_H
- #define _INSTALLER_H
- // Includes.
- #include "RegistryManager.h"
- #include "Utilities.h"
- #include "Wwuiinput.h"
- // Forward declarations.
- class AudibleSoundClass;
- class CardSelectionDialogClass;
- class CopyDialogClass;
- class DialogBaseClass;
- class FinalDialogClass;
- class GameDirectoryDialogClass;
- class GameFolderDialogClass;
- class INIClass;
- class NDADialogClass;
- class LicenseDialogClass;
- class MixFileFactoryClass;
- class ReviewDialogClass;
- class SerialDialogClass;
- class WelcomeDialogClass;
- class WhatToInstallDialogClass;
- class WOL1DialogClass;
- class WOL2DialogClass;
- class WOLDirectoryDialogClass;
- class WOLFolderDialogClass;
- class WWAudioClass;
- class WW3DAssetManager;
- // Class definitions.
- class InstallerUIInputClass : public WWUIInputClass
- {
- public:
- InstallerUIInputClass() : WWUIInputClass(), MousePosition (Vector3 (0.0f, 0.0f, 0.0f)) {}
- void Add_Mouse_Wheel (short delta)
- {
- MousePosition.Z += delta;
- }
- private:
- const Vector3 &Get_Mouse_Pos (void) const
- {
- POINT cursorposition;
- GetCursorPos (&cursorposition);
- ScreenToClient (MainWindow, &cursorposition);
- MousePosition.X = cursorposition.x;
- MousePosition.Y = cursorposition.y;
- return (MousePosition);
- }
-
- void Set_Mouse_Pos (const Vector3 &position)
- {
- POINT p;
- if (GameInFocus) {
- p.x = position.X;
- p.y = position.Y;
- ClientToScreen (MainWindow, &p);
- SetCursorPos (p.x, p.y);
- MousePosition.X = p.x;
- MousePosition.Y = p.y;
- }
- }
- bool Is_Button_Down (int vk_mouse_button_id)
- {
- bool retval = false;
- switch (vk_mouse_button_id)
- {
- case VK_LBUTTON:
- case VK_MBUTTON:
- case VK_RBUTTON:
- retval = (GetKeyState (vk_mouse_button_id) & 0x80000000) != 0x0;
- break;
- }
- return retval;
- }
- mutable Vector3 MousePosition;
- };
- class FileLogClass {
- public:
- // Equality operator.
- bool operator == (const FileLogClass &f) {
- return ((RelativePathname == f.RelativePathname) && (Size == f.Size));
- }
- // Inequality operator.
- bool operator != (const FileLogClass &f) {
- return (!(*this == f));
- }
-
- WideStringClass RelativePathname; // Relative pathname of file.
- __int64 Size; // Size of file (in bytes).
- };
- class InstallerClass
- {
- public:
- InstallerClass();
- ~InstallerClass();
-
- InstallerUIInputClass *Get_Input() {return (UIInput);}
- void Cancel_Introduction() {CancelIntroduction = true;}
- void Install (MixFileFactoryClass *mixfilefactory);
- void Dialog_Callback (DialogBaseClass *dialog, int ctrl_id, int message_id, DWORD param);
- void On_Prog_End();
- // Main interface.
- const WCHAR *Get_Source_Game_Path (WideStringClass &path) {path = SourceGamePath; return (path);}
- const WCHAR *Get_Source_WOL_Path (WideStringClass &path) {path = SourceWOLPath; return (path);}
- bool Install_Game();
- bool Install_WOL();
- bool Install_Game_Shortcut();
- __int64 Get_Game_Size (bool ondisk);
- __int64 Get_WOL_Size (bool ondisk);
- __int64 Get_Total_Size (bool ondisk);
- bool Get_Game_Space_Available (const WideStringClass &path, __int64 &diskspace) {return (Get_Disk_Space_Available (path, diskspace));}
- bool Get_WOL_Space_Available (const WideStringClass &path, __int64 &diskspace);
- const char *Get_Serial_Number (StringClass &serialnumber);
- const WCHAR *Get_Target_Game_Path (WideStringClass &path);
- bool Get_Target_Sub_Path (unsigned index, WideStringClass &subdirectoryname);
- const WCHAR *Get_Target_WOL_Path (WideStringClass &path);
- const WCHAR *Get_Target_Game_Folder (WideStringClass &folder);
- const WCHAR *Get_Target_WOL_Folder (WideStringClass &folder);
- bool Is_Fresh_Game_Install() {return (FreshGameInstall);}
- bool Is_Fresh_WOL_Install() {return (FreshWOLInstall);}
- bool Is_Target_WOL_Older_Than_Source() {return (TargetWOLOlder);}
- WW3DAssetManager *Get_Asset_Manager() {return (AssetManager);}
- bool Can_Use_IGR_Settings();
- bool Use_IGR_Settings();
- bool Beta_Test();
-
- // Registry interface.
- void Update_Registry();
- void Create_Links();
- bool Get_WOL_Account (unsigned index, WideStringClass &name, WideStringClass &password);
- void Set_Preferred_WOL_Account (const WideStringClass &accountname) {_RegistryManager.Set_Preferred_WOL_Account (accountname);}
- // File/subdirectory logging interface.
- void Log (const WideStringClass &pathname, __int64 size = -1);
- void Create_Uninstall_Logs();
- protected:
- enum ProgEndActionEnum {
- ACTION_NONE,
- ACTION_RUN_GAME,
- ACTION_DISPLAY_README
- };
- // Internal initialization/shutdown.
- void Initialize();
- void Shutdown();
- bool WW3D_Initialize (int cardselection = -1);
- void WW3D_Shutdown();
- // Support functions.
- bool Check_Source();
- void Count_Source_Files (const WideStringClass &sourcepath, unsigned &filecount, __int64 &filesize);
- void Check_Existing_Install();
- void Auto_Configure();
- bool Register_COM_Server (const WideStringClass &comdll);
- void Create_Encryption_File (const WideStringClass &pathname);
- void Encrypt (const char *number, const WideStringClass &pathname, StringClass &encryptednumber);
- bool Create_File_Link (const WideStringClass &linkpath, const WideStringClass &title, const WideStringClass &targetpathname, const WideStringClass &iconpathname, const WideStringClass *arguments = NULL);
- bool Create_URL_Link (const WideStringClass &linkpath, const WideStringClass &title, const WideStringClass &url);
- bool Has_WOL_Account();
- void Create_Game_Uninstall_Log();
- void Create_WOL_Uninstall_Log();
- void Run_Game();
- void Display_Readme();
- // Data.
- INIClass *SetupIni;
- INIClass *GameIni;
- INIClass *WOLIni;
- WideStringClass SourceGamePath;
- WideStringClass SourceWOLPath;
- MixFileFactoryClass *MixFileFactory;
- DynamicVectorClass <WideStringClass> FontNames;
- WideStringClass TargetGamePath;
- bool FreshGameInstall;
- bool FreshWOLInstall;
- bool TargetWOLOlder;
- unsigned GameFileCount;
- __int64 GameSize;
- unsigned WOLFileCount;
- __int64 WOLSize;
- WW3DAssetManager *AssetManager;
- bool WwmathInitialized;
- bool DialogMgrInitialized;
- WWAudioClass *AudioSystem;
- AudibleSoundClass *TransitionMusic;
- AudibleSoundClass *InstallMusic;
- InstallerUIInputClass *UIInput;
- bool CancelIntroduction;
- bool CancelApplication;
- WelcomeDialogClass *WelcomeDialog;
- NDADialogClass *NDADialog;
- LicenseDialogClass *LicenseDialog;
- SerialDialogClass *SerialDialog;
- WhatToInstallDialogClass *WhatToInstallDialog;
- GameDirectoryDialogClass *GameDirectoryDialog;
- GameFolderDialogClass *GameFolderDialog;
- WOLDirectoryDialogClass *WOLDirectoryDialog;
- WOLFolderDialogClass *WOLFolderDialog;
- ReviewDialogClass *ReviewDialog;
- CopyDialogClass *CopyDialog;
- WOL1DialogClass *WOL1Dialog;
- WOL2DialogClass *WOL2Dialog;
- FinalDialogClass *FinalDialog;
- CardSelectionDialogClass *CardSelectionDialog;
- DynamicVectorClass <WideStringClass> GameSubdirectories;
- DynamicVectorClass <FileLogClass> GameFiles;
- DynamicVectorClass <FileLogClass> WOLFiles;
- ProgEndActionEnum ProgEndAction;
- };
- // Singleton.
- extern InstallerClass _Installer;
- #endif // INSTALLER_H
|