mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
293 lines
7.5 KiB
293 lines
7.5 KiB
#ifndef _MACHINE_H_
|
|
#define _MACHINE_H_
|
|
|
|
class CFileInfo : public CObject
|
|
{
|
|
public:
|
|
INT m_iDisk;
|
|
CString m_strName;
|
|
CString m_strDest;
|
|
CString m_rename;
|
|
CString m_from;
|
|
CString m_To;
|
|
DWORD m_iSize;
|
|
BOOL m_fWin95Only;
|
|
BOOL m_fWinntOnly;
|
|
BOOL m_fSystem;
|
|
BOOL m_fWinDir;
|
|
BOOL m_fDontRemove;
|
|
BOOL m_fRefCount;
|
|
BOOL m_fRootFile;
|
|
BOOL m_fScriptFile;
|
|
BOOL m_fDontOverwrite;
|
|
|
|
CFileInfo( INT iDisk, TCHAR *szName, DWORD iSize );
|
|
};
|
|
|
|
typedef CPtrList CFileList;
|
|
extern BOOL CreateLayerDirectory( CString str );
|
|
extern BOOL RecRemoveEmptyDir(LPCTSTR szName);
|
|
|
|
enum MACHINE_TYPE
|
|
{
|
|
MT_INTEL = 0,
|
|
MT_ALPHA = 1,
|
|
MT_MIPS = 2,
|
|
MT_PPC = 3
|
|
};
|
|
|
|
enum INSTALL_MODE
|
|
{
|
|
INSTALL_CLIENT,
|
|
INSTALL_ADMIN,
|
|
INSTALL_GATEWAY,
|
|
INSTALL_GATEWAY_CLIENT,
|
|
INSTALL_ALL
|
|
};
|
|
|
|
enum PRODUCT_TYPE
|
|
{
|
|
PT_NON_NT,
|
|
PT_WINNT,
|
|
PT_NTAS
|
|
};
|
|
|
|
class MACHINE;
|
|
|
|
class OPTION_STATE;
|
|
|
|
typedef CPtrList OPTIONS_LIST;
|
|
|
|
extern OPTION_STATE * FindOption( OPTIONS_LIST &pList, INT nOption );
|
|
|
|
class OPTION_STATE : public CObject
|
|
{
|
|
public:
|
|
|
|
MACHINE *m_pMachine;
|
|
BOOL fVisible;
|
|
UINT iState;
|
|
UINT iAction;
|
|
DWORD iSize;
|
|
INT nID;
|
|
CString strName;
|
|
CString strDescription;
|
|
CString strServiceName;
|
|
CString strRegPath;
|
|
CString strInstallDirPath;
|
|
CFileList FileList;
|
|
OPTIONS_LIST OptionsList;
|
|
CString m_GuestName;
|
|
CString m_GuestPassword;
|
|
|
|
OPTION_STATE( INT nID, MACHINE *pMachine );
|
|
~OPTION_STATE();
|
|
CString LocalPath();
|
|
virtual void GetBatchInstallMode( CString strInfName );
|
|
virtual void GetFileList( CStdioFile &InfFile );
|
|
virtual DWORD GetTotalSize();
|
|
virtual INT DoAdd();
|
|
virtual INT DoRemove();
|
|
virtual void DoNotInstallOption(int nID);
|
|
virtual void DoNotRemoveOption(int nID);
|
|
virtual void SetAction( INT iAction );
|
|
void GetHomeDir( UINT, CString &, CString & );
|
|
|
|
INT CopyFile();
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual INT RemoveFiles();
|
|
void DeleteFile(CString csFileName);
|
|
virtual CString GetInstallDirectory();
|
|
virtual void ResetOption();
|
|
virtual BOOL IsInstalled();
|
|
virtual void SetAnonymousAccountInfo(int nID);
|
|
|
|
};
|
|
|
|
class MACHINE : public CObject
|
|
{
|
|
public:
|
|
INT m_err;
|
|
BOOL m_fOSNT;
|
|
BOOL m_fLocal;
|
|
CString m_MachineName;
|
|
CString m_strDestinationPath;
|
|
CString strDirectory;
|
|
BOOL m_fReinstall;
|
|
// status of the destination machine
|
|
BOOL m_fUpgradeFrom67; // dest has IIS 1.0 installed
|
|
BOOL m_fUpgradeFrom1314; // dest has IIS 2.0 Beta installed
|
|
BOOL m_fAlreadyInstall; // dest has IIS 2.0 installed (this)
|
|
enum MACHINE_TYPE m_MachineType;
|
|
enum PRODUCT_TYPE m_ProductType;
|
|
enum PRODUCT_TYPE m_actualProductType;
|
|
enum INSTALL_MODE m_InstallMode;
|
|
CWordArray arReinstallList;
|
|
|
|
// helper dll and functions
|
|
HINSTANCE m_WorkerDll;
|
|
|
|
P_GetMachineType m_pGetMachineType;
|
|
P_GetNTSysPath m_pGetNTSysPath;
|
|
P_GetWIN95SysPath m_pGetWIN95SysPath;
|
|
P_GetMachineOS m_pGetMachineOS;
|
|
P_IsInstalled m_pIsInstalled;
|
|
|
|
// options
|
|
OPTIONS_LIST m_OptionsList;
|
|
|
|
INT SetMachine( CString strName );
|
|
INT GetSysPath();
|
|
INT GetMachineType();
|
|
INT GetMachineOS();
|
|
enum PRODUCT_TYPE GetProductType();
|
|
void GetLocalMachineName();
|
|
|
|
void ResetOptionState();
|
|
void SetNewInstallation();
|
|
void SetMaintenance();
|
|
void Reinstall( OPTIONS_LIST &list );
|
|
void RemoveAll();
|
|
|
|
void SetupOptions();
|
|
//void SetOptionPath();
|
|
|
|
BOOL LoadDLL();
|
|
|
|
void DisableOption (INT nId );
|
|
void DeleteShareDllEntries();
|
|
void GetInstalledList( OPTIONS_LIST &list );
|
|
CString GetWinDir();
|
|
void ChangeDir( CString strDir );
|
|
|
|
// file ref count operation
|
|
INT FileIncRefCount( CString strName );
|
|
INT FileDecRefCount( CString strName );
|
|
void CreateSharedDllsRegPath();
|
|
BOOL IsNewInstall();
|
|
BOOL IsSupportVersion();
|
|
|
|
MACHINE();
|
|
~MACHINE();
|
|
|
|
INT Init();
|
|
};
|
|
|
|
class UPG1314_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
UPG1314_OPTION( MACHINE *pMachine );
|
|
virtual INT Remove();
|
|
};
|
|
|
|
class FTP_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
P_SetupFTP m_pSetupFTP;
|
|
P_RemoveFTP m_pRemoveFTP;
|
|
P_StopFTP m_pStopFTP;
|
|
P_DisableService m_pDisableService;
|
|
P_INetStartService m_pINetStartService;
|
|
P_GuestAccEnabled m_pGuestAccEnabled;
|
|
P_RemoveOldFTP m_pRemoveOldFTP;
|
|
CString m_vroot;
|
|
CString m_vroot_name;
|
|
BOOL m_fNeedToRestart;
|
|
|
|
FTP_OPTION( MACHINE *pMachine );
|
|
virtual BOOL IsInstalled();
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual void GetBatchInstallMode( CString strInfName );
|
|
virtual CString GetInstallDirectory();
|
|
INT RemoveFiles();
|
|
};
|
|
|
|
class ADMIN_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
ADMIN_OPTION( MACHINE *pMachine );
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual INT RemoveFiles();
|
|
virtual BOOL IsInstalled();
|
|
// void ResetOption();
|
|
void AddMoreServices( CRegKey ®);
|
|
void InstallPerfmonType();
|
|
void CreateExtension( CString strName, CString strValue );
|
|
// virtual void SetDirectory( CString strDirectory );
|
|
};
|
|
|
|
class GOPHER_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
P_SetupGopher m_pSetupGopher;
|
|
P_RemoveGopher m_pRemoveGopher;
|
|
P_StopGopher m_pStopGopher;
|
|
P_INetStartService m_pINetStartService;
|
|
CString m_vroot;
|
|
CString m_vroot_name;
|
|
BOOL m_fNeedToRestart;
|
|
|
|
GOPHER_OPTION( MACHINE *pMachine );
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual void GetBatchInstallMode( CString strInfName );
|
|
virtual CString GetInstallDirectory();
|
|
virtual INT RemoveFiles();
|
|
};
|
|
|
|
class WWW_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
P_SetupWWW m_pSetupWWW;
|
|
P_RemoveWWW m_pRemoveWWW;
|
|
P_StopWWW m_pStopWWW;
|
|
P_DisableService m_pDisableService;
|
|
P_INetStartService m_pINetStartService;
|
|
CString m_vroot;
|
|
CString m_vroot_name;
|
|
CString m_vScript;
|
|
CString m_vScript_name;
|
|
CString m_vIISadmin;
|
|
CString m_vIISadmin_name;
|
|
CString m_Mode;
|
|
CString m_NumUser;
|
|
BOOL m_fNeedToRestart;
|
|
|
|
WWW_OPTION( MACHINE *pMachine );
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual void GetBatchInstallMode( CString strInfName );
|
|
virtual CString GetInstallDirectory();
|
|
virtual INT RemoveFiles();
|
|
};
|
|
|
|
class W3SAMP_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
W3SAMP_OPTION( MACHINE *pMachine );
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual INT RemoveFiles();
|
|
};
|
|
|
|
class HTMLA_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
HTMLA_OPTION( MACHINE *pMachine );
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
virtual INT RemoveFiles();
|
|
};
|
|
|
|
class ODBC_OPTION: public OPTION_STATE
|
|
{
|
|
public:
|
|
ODBC_OPTION( MACHINE *pMachine );
|
|
virtual INT Install();
|
|
virtual INT Remove();
|
|
};
|
|
|
|
#endif // _MACHINE_H_
|