/****************************************************************************\ MAIN.H / OPK Wizard (OPKWIZ.EXE) Microsoft Confidential Copyright (c) Microsoft Corporation 1999 All rights reserved Main header file for the OPK Wizard. 3/99 - Jason Cohen (JCOHEN) Added this new main header file for the OPK Wizard as part of the Millennium rewrite. 09/2000 - Stephen Lodwick (STELO) Ported OPK Wizard to Whistler \****************************************************************************/ #ifndef _MAIN_H_ #define _MAIN_H_ // // Include File(s): // #include "debugapi.h" #include "miscapi.h" #include "comres.h" #include #include // // Defined Value(s): // // Do not display the license for the system builders // #define NO_LICENSE // Comment this value if you want the license to appear during the wizard //#define BRANDTITLE // Comment this value if you do not want the Browswer Title wizard page to be displayed //#define HELPCENTER // Comment this value if you do not want the help center wizard page to be displayed //#define USEHELP // Comment the value if you do not want to use help throughout the wizard // App defined flags. // #define OPK_OEM 0x00000008 // Set if the OEM tag file exists on startup. #define OPK_DBCS 0x00000010 // Set if DBCS is defined when built. #define OPK_MAINTMODE 0x00000020 // Set if the user chooses an existing config to open. #define OPK_EXIT 0x00000040 #define OPK_CMDMM 0x00000080 // Set if the user chooses an existing config via the command line. #define OPK_CREATED 0x00000100 // Set once the temp directory is created. #define OPK_BATCHMODE 0x00000200 // Set if the user chooses to run the wizard in batch mode. #define OPK_INSMODE 0x00000400 // Set if user wants to provide IE install file with batch mode #define OPK_AUTORUN 0x00000800 // Set if user is running autorun mode #define OPK_WELCOME 0x00002000 // Set if the user has already seen the welcome dialog #define OPK_OPENCONFIG 0x00004000 // Set if the user has selected to open a config set #define OPK_ACTIVEWIZ 0x00008000 // Set if the wizard is currently running // OS version defines used when checking dwOsVer in the golbal data structure. // #define OS_NT4 0x00040000 #define OS_NT4_SP1 0x00040001 #define OS_NT4_SP2 0x00040002 #define OS_NT4_SP3 0x00040003 #define OS_NT4_SP4 0x00040004 #define OS_NT4_SP5 0x00040005 #define OS_W2K 0x00050000 #define OS_W2K_SP1 0x00050001 #define OS_W2K_SP2 0x00050002 #define OS_XP 0x00050100 // Custom messages. // #define WM_SUBWNDPROC WM_APP + 1 #define WM_SETSEL WM_APP + 2 #define WM_FINISHED WM_APP + 3 #define WM_APP_STARTCOPY WM_APP + 4 // Used by IDD_SKU's dialog proc (SkuDlgProc) to tell when the progress // is finished. WPARAM contains the error code (1 for success or 0 for failure). // LPARAM is always 0. // #define WM_COPYFINISHED WM_APP + 5 #define KEY_ESC 27 // Bufer sizes. // #define MAX_URL 2048 #define MAX_ICON MAX_PATH #define MAX_STRING 512 #define MAX_SECTION 32767 #define INF_BUF_SIZE 16768 #define MAX_INFOLEN 82 #define MAX_KEY 48 #define MAX_BTOOLBAR_TEXT 10 // Macros for getting/setting the flags. // #ifdef GET_FLAG #undef GET_FLAG #endif // GET_FLAG #define GET_FLAG(b) ( g_App.dwFlags & b ) #ifdef SET_FLAG #undef SET_FLAG #endif // SET_FLAG #define SET_FLAG(b, f) ( (f) ? (g_App.dwFlags |= b) : (g_App.dwFlags &= ~b) ) // Help ids. // #define IDH_DEFAULT 101 #define IDH_DETHELP 102 #define IDH_DISKDUP 103 #define IDH_SCREENS 104 #define IDH_MEDIA 105 #define IDH_WELCOME 106 #define IDH_LOGO 107 #define IDH_FINISH 108 #define IDH_OEMINFO 109 #define IDH_APPINSTALL 110 #define IDH_DEVCLASS 111 #define IDH_CDNETW 112 #define IDH_DISABLENET 113 #define IDH_MODESEL 114 #define IDH_REALMODE_INFO 115 #define IDH_REALMODE 116 #define IDH_LICENSE 117 #define IDH_FIRSTRUN 118 #define IDH_FAVORITES 119 #define IDH_IECUST 120 #define IDH_ISP 121 #define IDH_USERREG 122 #define IDH_OEMCUST 123 #define IDH_SANDBOX 124 #define IDH_ACTIVEDESK 125 #define IDH_OEMCHAN 126 #define IDH_OOBEUSB 127 #define IDH_CONFIG 128 #define IDH_SCREENSTWO 129 #define IDH_BTITLE 130 #define IDH_BTOOLBAR 131 #define IDH_CHANNELS 132 #define IDH_COMPLETED 133 #define IDH_HELPCENT 134 #define IDH_STARTMENU_MFU 135 #define IDH_OEMFOLDER 136 #define IDH_TARGETLANG 137 #define IDH_TARGET 150 #define IDH_ANSW_FILE 400 //New or Existing Answer File #define IDH_PROD_INST 401 //Product to Install #define IDH_CHZ_PLAT 402 //Platform #define IDH_USER_INTER 403 //User Interaction Level #define IDH_DIST_FLDR 404 //Distribution Folder #define IDH_LOC_SETUP 405 //Location of Setup Files #define IDH_CUST_SOFT 406 //Customize the Software, General Settings #define IDH_DSIP_SETG 407 //Display Settings, General Settings #define IDH_TIME_ZONE 408 //Time Zone, General Settings #define IDH_LICE_MODE 409 //Licensing Mode, Network Settings #define IDH_COMP_NAME 410 //Computer Name, Network Settings #define IDH_COMP_NAMZ 411 //Computer Names, Network Settings #define IDH_ADMN_PASS 412 //Administrator Password, Network Settings #define IDH_NET_COMPS 413 //Networking Components, Network Settings #define IDH_WKGP_DOMN 414 //Workgroup or Domain, Network Settings #define IDH_TELE_PHNY 415 //Telephony, Advanced Settings #define IDH_REGN_STGS 416 //Regional Settings, Advanced Settings #define IDH_LANGS 417 //Languages, Advanced Settings #define IDH_BROW_SHELL 418 //Browser and Shell Settings, Advanced Settings #define IDH_INST_FLDR 419 //Installation Folder, Advanced Settings #define IDH_INST_PRTR 420 //Install Printers, Advanced Settings #define IDH_RUN_ONCE 421 //Run Once, Advanced Settings #define IDH_ADDL_CMND 422 //Additional Commands, Advanced Settings #define IDH_OEM_DUPE 423 //OEM Duplicator String, Advanced Settings #define IDH_SIF_RIS 424 //Setup Information File Text, Advanced Settings #define IDH_PROD_KEY 425 // Product Key #define IDH_LIC_AGR 426 //License Agreement // // INI strings // // INI Sections // #define INI_SEC_CONFIGSET _T("ConfigSet") #define INI_SEC_OPTIONS _T("Options") #define INI_SEC_ADVANCED _T("Advanced") #define INI_SEC_TOOLBAR _T("BrowserToolbars") #define INI_SEC_STARTUP _T("StartupOptions") #define INI_SEC_SIGNUP _T("Signup") #define INI_SEC_ISPFOLDER _T("ISPFolder") #define INI_SEC_OEMCUST _T("OemCust") #define INI_SEC_GENERAL _T("General") #define INI_SEC_URL _T("URL") #define INI_SEC_CONFIG _T("ConfigName") #define INI_SEC_BRANDING _T("Branding") #define INI_SEC_VERSION _T("Version") #define INI_SEC_WINPE _T("WinPE") #define INI_SEC_MFULIST _T("StartMenuMFUlist") #define INI_SEC_OEMLINK _T("OemLink") #define INF_SEC_COPYFILES _T("CopyFiles") // INI Keys // #define INI_KEY_MANUFACT _T("Manufacturer") #define INI_KEY_FINISHED _T("Finished") #define INI_KEY_MOUSE _T("MouseTutorial") #define INI_KEY_HARDWARE _T("OEMHWTutorial") #define INI_KEY_ISPRET _T("IspRetail") #define INI_KEY_PRECONFIG _T("IspPreconfigDir") #define INI_KEY_STARTURL _T("DesktopStartUrl") #define INI_KEY_ISPSIGNUP _T("ISPSignup") #define INI_KEY_ISPPATH _T("ISPPath") #define INI_KEY_LOGO1 _T("Logo1") #define INI_KEY_LOGO2 _T("Logo2") #define INI_KEY_OEMCUST _T("OEMCust") #define INI_KEY_FILELINE _T("Line%d") #define INI_KEY_USBERRORFILES _T("USBErrorFiles") #define INI_KEY_IMETUT _T("IMETutorial") #define INI_KEY_IMECUSTDIR _T("IMECustDir") #define INI_KEY_CUSTMOUSE _T("CustomMouse") #define INI_KEY_HELP_CENTER _T("HelpCenterDir") #define INI_KEY_SUPPORT_CENTER _T("HelpSupportDir") #define INI_KEY_HELP_BRANDING _T("HelpBrandingDir") #define INI_KEY_WINPE_LANG _T("Lang") #define INI_KEY_WINPE_CFGSET _T("ConfigSet") #define INI_KEY_WINPE_SRCROOT _T("SourceRoot") #define INI_KEY_WINPE_USERNAME _T("Username") #define INI_KEY_WINPE_PASSWORD _T("Password") #define INI_KEY_MFULINK _T("Link%d") #define INI_KEY_WELCOME _T("Welcome") #define INI_KEY_APPCREDENTIALS _T("FactoryCredentials") #define INI_KEY_OEMLINK_LINKTEXT _T("OemBrandLinkText") #define INI_KEY_OEMLINK_INFOTIP _T("OemBrandLinkInfotip") #define INI_KEY_OEMLINK_ICON_ORIGINAL _T("OriginalOemLinkIcon") #define INI_KEY_OEMLINK_PATH_ORIGINAL _T("OriginalLink") #define INI_KEY_OEMLINK_ICON_LOCAL _T("OemBrandIcon") #define INI_KEY_OEMLINK_PATH_LOCAL _T("OemBrandLink") #define INI_KEY_DESKFLDR_ENABLE _T("DesktopShortcutsCleanupEnabled") // INI Values // #define INI_VAL_OFFLINE _T("Offline") #define INI_VAL_PRECONFIG _T("Preconfig") #define INI_VAL_DISABLE _T("disable") #define INI_VAL_DUMMY _T("OPKWIZDUMMYLINE") #define INI_VAL_WINPE_COMPNAME _T("") #define INI_VAL_WINPE_SHARENAME _T("") // INI Other // #define GRAY _T("_Gray") // Config files. // #define FILE_SETUPMGR_INI _T("setupmgr.ini") #define FILE_OPKWIZ_HLP _T("setupmgr.chm") #define FILE_OPKINPUT_INF _T("opkinput.inf") #define FILE_INSTALL_INS _T("install.ins") #define FILE_OPKWIZ_INI _T("cfgbatch.txt") #define FILE_OOBEINFO_INI _T("oobeinfo.ini") #define FILE_OEMAUDIT_INF _T("oemaudit.inf") #define FILE_OEMINFO_INI _T("oeminfo.ini") #define FILE_UNATTEND_TXT _T("unattend.txt") #define FILE_OEM_TAG _T("oem.tag") #define DIR_WIZARDFILES _T("wizfiles") #define DIR_OEM _T("$OEM$") #define DIR_OEM_WINDOWS DIR_OEM _T("\\$$") #define DIR_OEM_SYSTEM32 DIR_OEM_WINDOWS _T("\\system32") #define DIR_OEM_OOBE DIR_OEM_SYSTEM32 _T("\\oobe") #define DIR_IESIGNUP DIR_OEM _T("\\$PROGS\\Internet Explorer\\Custom") // Other strings. // #define STR_0 _T("0") #define STR_1 _T("1") #define STR_2 _T("2") #define STR_ZERO STR_0 #define STR_ONE STR_1 #define STR_CRLF _T("\r\n") #define STR_SPACE _T(" ") #define CHR_BACKSLASH _T('\\') #define CHR_SPACE _T(' ') #define CHR_EQUAL _T('=') #define CHR_LINEFEED _T('\n') #define CHR_QUOTE _T('\"') #define CHR_STAR _T('*') #define STR_EQUAL _T("=") #define STR_CAB _T(".cab") #define STR_OPEN _T("open") // // Type Definition(s): // // Global app data. // typedef struct _GAPP { HINSTANCE hInstance; DWORD dwFlags; TCHAR szOpkDir[MAX_PATH]; // Full path to the root of the OPK directory where all the tools are installed. TCHAR szWizardDir[MAX_PATH]; // Full path to the directory where the default configuration files are located. TCHAR szConfigSetsDir[MAX_PATH]; // Full path to the directory where all the configuration sets are located. TCHAR szLangDir[MAX_PATH]; // Full path to the root of language folder where all the specific lang directories are. TCHAR szTempDir[MAX_PATH]; // Full path to the current location for all the configuration files. TCHAR szLangName[MAX_PATH]; // Name of the language directory we are deploying (not a full path). TCHAR szSkuName[MAX_PATH]; // Name of the sku directory we are deploying (not a full path). TCHAR szConfigName[MAX_PATH]; // Name of the directory to use for the configuration set (not a full path). TCHAR szBrowseFolder[MAX_PATH]; // Full path to the last folder browsed to. TCHAR szOpkInputInfFile[MAX_PATH]; TCHAR szSetupMgrIniFile[MAX_PATH]; // Full path to the file were we store global SetupMgr settings (we don't use the registry). TCHAR szHelpFile[MAX_PATH]; TCHAR szHelpContentFile[MAX_PATH]; TCHAR szInstallInsFile[MAX_PATH]; TCHAR szOpkWizIniFile[MAX_PATH]; TCHAR szOobeInfoIniFile[MAX_PATH]; TCHAR szOemInfoIniFile[MAX_PATH]; TCHAR szWinBomIniFile[MAX_PATH]; TCHAR szUnattendTxtFile[MAX_PATH]; DWORD dwCurrentHelp; HWND hwndHelp; DWORD dwOsVer; TCHAR szManufacturer[MAX_PATH]; TCHAR szLastKnownBrowseFolder[MAX_PATH]; } GAPP, *PGAPP, *LPGAPP; #undef LSTRCMPI #define LSTRCMPI(x, y) ( ( CompareString( MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT), NORM_IGNORECASE, x, -1, y, -1 ) - CSTR_EQUAL ) ) // // External Global Variable(s): // // Don't want to declare these again. // #ifndef _MAIN_C_ #define _MAIN_C_ extern GAPP g_App; #endif // _MAIN_C_ // // External Function Prototype(s); // // From MAIN.C // void SetConfigPath(LPCTSTR); // From LANG.C // void SetupLangListBox(HWND hwndLB); LPTSTR AllocateLangStr(HINSTANCE hInst, LPTSTR lpLangDir, LPTSTR * lplpLangDir); // From LANGSKU.C // void ManageLangSku(HWND hwndParent); // From SHARE.C // BOOL DistributionShareDialog(HWND hwndParent); BOOL GetShareSettings(LPTSTR lpszPath, DWORD cbszPath, LPTSTR lpszUsername, DWORD cbszUserName, LPTSTR lpszPassword, DWORD cbszPassword); // From SKU.C // void SetupSkuListBox(HWND hwndLB, LPTSTR lpLangDir); void AddSku(HWND hwnd, HWND hwndLB, LPTSTR lpLangName); void DelSku(HWND hwnd, HWND hwndLB, LPTSTR lpLangName); // From WINPE.C // BOOL MakeWinpeFloppy(HWND hwndParent, LPTSTR lpConfigName, LPTSTR lpWinBom); // Checks for batch mode // BOOL OpkWritePrivateProfileSection(LPCTSTR, LPCTSTR, LPCTSTR); BOOL OpkGetPrivateProfileSection(LPCTSTR, LPTSTR, INT, LPCTSTR); BOOL OpkWritePrivateProfileString(LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR); BOOL OpkGetPrivateProfileString(LPCTSTR, LPCTSTR, LPCTSTR, LPTSTR, INT, LPCTSTR); #endif // _MAIN_H_