windows-nt/Source/XPSP1/NT/inetsrv/iis/setup/osrc/initapp.h
2020-09-26 16:20:57 +08:00

200 lines
6 KiB
C++

#include "itemlist.hxx"
#ifndef _INITAPP_H_
#define _INITAPP_H_
typedef PVOID HINF;
#define USER_SPECIFIED_INFO_WWW_USER_NAME 0x00000001
#define USER_SPECIFIED_INFO_WWW_USER_PASS 0x00000002
#define USER_SPECIFIED_INFO_FTP_USER_NAME 0x00000004
#define USER_SPECIFIED_INFO_FTP_USER_PASS 0x00000008
#define USER_SPECIFIED_INFO_WAM_USER_NAME 0x00000010
#define USER_SPECIFIED_INFO_WAM_USER_PASS 0x00000020
#define USER_SPECIFIED_INFO_PATH_WWW 0x000000040
#define USER_SPECIFIED_INFO_PATH_FTP 0x000000080
#define USER_SPECIFIED_INFO_PATH_INETPUB 0x000000100
int TCPIP_Check_Temp_Hack(void);
void GetUserDomain(void);
int AreWeCurrentlyInstalled();
void Check_Custom_WWW_or_FTP_Path(void);
void Check_Custom_Users(void);
void Check_Unattend_Settings(void);
int Check_Custom_InetPub(void);
void Check_For_DebugServiceFlag(void);
class CInitApp : public CObject
{
public:
CInitApp();
~CInitApp();
public:
int m_err;
HINF m_hInfHandle;
HINF m_hInfHandleAlternate;
BOOL m_bAllowMessageBoxPopups;
BOOL m_bThereWereErrorsChkLogfile;
BOOL m_bThereWereErrorsFromMTS;
BOOL m_bWin95Migration;
// Product name and application name
CString m_csAppName;
CString m_csIISGroupName; // Start menu IIS Program Group Name
// account + passwd for anonymous user
CString m_csGuestName;
CString m_csGuestPassword;
CString m_csWAMAccountName;
CString m_csWAMAccountPassword;
CString m_csWWWAnonyName;
CString m_csWWWAnonyPassword;
CString m_csFTPAnonyName;
CString m_csFTPAnonyPassword;
// dwUnattendUserSpecified Values:
// USER_SPECIFIED_INFO_WWW_USER_NAME
// USER_SPECIFIED_INFO_WWW_USER_PASS
// USER_SPECIFIED_INFO_FTP_USER_NAME
// USER_SPECIFIED_INFO_FTP_USER_PASS
// USER_SPECIFIED_INFO_WAM_USER_NAME
// USER_SPECIFIED_INFO_WAM_USER_PASS
// USER_SPECIFIED_INFO_PATH_WWW
// USER_SPECIFIED_INFO_PATH_FTP
// USER_SPECIFIED_INFO_PATH_INETPUB
DWORD dwUnattendConfig;
// storage for the user specified unattended iwam/iusr users
CString m_csWAMAccountName_Unattend;
CString m_csWAMAccountPassword_Unattend;
CString m_csWWWAnonyName_Unattend;
CString m_csWWWAnonyPassword_Unattend;
CString m_csFTPAnonyName_Unattend;
CString m_csFTPAnonyPassword_Unattend;
// storage for the iusr/iwam accounts which need to get
// removed during a removal, this could be different from
// what is getting added -- since unattend parameters could
// have been specified!
CString m_csWAMAccountName_Remove;
CString m_csWWWAnonyName_Remove;
CString m_csFTPAnonyName_Remove;
CMapStringToString m_cmssUninstallMapList;
BOOL m_fUninstallMapList_Dirty;
// machine status
CString m_csMachineName;
CString m_csUsersDomain;
CString m_csUsersAccount;
CString m_csWinDir;
CString m_csSysDir;
CString m_csSysDrive;
CString m_csPathSource;
CString m_csPathOldInetsrv;
CString m_csPathInetsrv;
CString m_csPathInetpub;
CString m_csPathFTPRoot;
CString m_csPathWWWRoot;
CString m_csPathWebPub;
CString m_csPathProgramFiles;
CString m_csPathIISSamples;
CString m_csPathScripts;
CString m_csPathASPSamp;
CString m_csPathAdvWorks;
CString m_csPathIASDocs;
CString m_csPathOldPWSFiles;
CString m_csPathOldPWSSystemFiles;
NT_OS_TYPE m_eNTOSType;
OS m_eOS;
DWORD m_dwOSBuild;
DWORD m_dwOSServicePack;
BOOL m_fNT5; // TRUE if OS is NT
BOOL m_fW95; // TRUE if OS is NT
CString m_csPlatform; // Alpha, Mips, PPC, i386
DWORD m_dwNumberOfProcessors;
BOOL m_fTCPIP; // TRUE if TCP/IP is installed
UPGRADE_TYPE m_eUpgradeType; // UT_NONE, UT_10, UT_20, etc.
BOOL m_bUpgradeTypeHasMetabaseFlag;
INSTALL_MODE m_eInstallMode; // IM_FRESH, IM_MAINTENANCE, IM_UPGRADE
DWORD m_dwSetupMode;
BOOL m_bPleaseDoNotInstallByDefault;
BOOL m_bRefreshSettings; // FALSE: refresh files only, TRUE: refresh files + refresh all settings
ACTION_TYPE m_eAction; // AT_FRESH, AT_ADDREMOVE, AT_REINSTALL, AT_REMOVEALL, AT_UPGRADE
// Some Specific flags set from ocmanage
DWORDLONG m_fNTOperationFlags;
BOOL m_fNTGuiMode;
BOOL m_fNtWorkstation;
BOOL m_fInvokedByNT; // superset of m_fNTGuiMode and ControlPanel which contains sysoc.inf
BOOL m_fUnattended;
CString m_csUnattendFile;
HINF m_hUnattendFile;
BOOL m_fEULA;
BOOL m_fMoveInetsrv;
CString m_csPathSrcDir;
CString m_csPathNTSrcDir;
CString m_csMissingFile;
CString m_csMissingFilePath;
BOOL m_fWebDownload;
public:
// Implementation
int MsgBox(HWND hWnd, int strID, UINT nType, BOOL bGlobalTitle);
int MsgBox2(HWND hWnd, int iID,CString csInsertionString,UINT nType);
public:
BOOL InitApplication();
void DumpAppVars();
void ReGetMachineAndAccountNames();
void DefineSetupModeOnNT();
BOOL IsTCPIPInstalled();
void SetInetpubDerivatives();
void ResetWAMPassword();
void UnInstallList_Add(CString csItemUniqueKeyName,CString csDataToAdd);
void UnInstallList_DelKey(CString csItemUniqueKeyName);
void UnInstallList_DelData(CString csDataValue);
void UnInstallList_Dump();
void UnInstallList_RegRead();
void UnInstallList_RegWrite();
void UnInstallList_SetVars();
CString UnInstallList_QueryKey(CString csItemUniqueKeyName);
private:
BOOL GetSysDirs();
BOOL GetOS();
BOOL GetOSVersion();
BOOL GetOSType();
BOOL SetInstallMode();
void GetPlatform();
BOOL GetMachineStatus();
BOOL GetMachineName();
int SetUpgradeType();
void SetSetupParams();
void SetInetpubDir();
void GetOldIISDirs();
void GetOldWWWRootDir();
void DeriveInetpubFromWWWRoot();
void GetOldIISSamplesLocation();
void GetOldInetSrvDir();
int Check_Custom_InetPub();
void Check_Unattend_Settings();
};
/////////////////////////////////////////////////////////////////////////////
#endif // _INITAPP_H_