//=--------------------------------------------------------------------------= // inseng.h //=--------------------------------------------------------------------------= // Copyright 1995-1998 Microsoft Corporation. All Rights Reserved. // // // interface declaration for the InstallEngine control. // #ifndef _INSENG_H_ #ifdef __cplusplus extern "C"{ #endif #define MAX_ID_LENGTH 48 #define MAX_DISPLAYNAME_LENGTH 128 #define ICI_NOTINSTALLED 0 #define ICI_INSTALLED 1 #define ICI_NEWVERSIONAVAILABLE 2 #define ICI_UNKNOWN 3 #define ICI_OLDVERSIONAVAILABLE 4 #define ICI_NOTINITIALIZED 0xffffffff #define ABORTINSTALL_NORMAL 0 #define ABORTINSTALL_IMMEADIATE 1 #define ENGINESTATUS_NOTREADY 0 #define ENGINESTATUS_LOADING 1 #define ENGINESTATUS_INSTALLING 2 #define ENGINESTATUS_READY 3 #define CDINSTALL 1 #define WEBINSTALL 2 #define WEBINSTALL_DIFFERENTMACHINE 3 #define NETWORKINSTALL 4 #define LOCALINSTALL 5 #define DEP_NEVER_INSTALL 'N' #define DEP_INSTALL 'I' #define SETACTION_NONE 0x00000000 #define SETACTION_INSTALL 0x00000001 #define INSTALLOPTIONS_NOCACHE 0x00000001 #define INSTALLOPTIONS_DOWNLOAD 0x00000002 #define INSTALLOPTIONS_INSTALL 0x00000004 #define INSTALLOPTIONS_DONTALLOWXPLATFORM 0x00000008 #define INSTALLOPTIONS_FORCEDEPENDENCIES 0x00000010 #define EXECUTEJOB_SILENT 0x00000001 #define EXECUTEJOB_DELETE_JOB 0x00000002 #define EXECUTEJOB_VERIFYFILES 0x00000008 #define EXECUTEJOB_IGNORETRUST 0x00000010 #define EXECUTEJOB_IGNOREDOWNLOADERROR 0x00000020 #define EXECUTEJOB_DONTALLOWCANCEL 0x00000040 #define E_FILESMISSING _HRESULT_TYPEDEF_(0x80100003L) HRESULT WINAPI CheckTrust(LPCSTR pszFilename, HWND hwndForUI, BOOL bShowBadUI); HRESULT WINAPI CheckTrustEx(LPCSTR szURL, LPCSTR szFilename, HWND hwndForUI, BOOL bShowBadUI, DWORD dwReserved); HRESULT WINAPI PurgeDownloadDir(LPCSTR pszDir); HRESULT WINAPI CheckForVersionConflict(); typedef struct { DWORD cbSize; DWORD dwInstallSize; DWORD dwWinDriveSize; DWORD dwDownloadSize; DWORD dwDependancySize; DWORD dwInstallDriveReq; DWORD dwWinDriveReq; DWORD dwDownloadDriveReq; CHAR chWinDrive; CHAR chInstallDrive; CHAR chDownloadDrive; DWORD dwTotalDownloadSize; } COMPONENT_SIZES; typedef struct { DWORD cbSize; DWORD dwDownloadKBRemaining; DWORD dwInstallKBRemaining; DWORD dwDownloadSecsRemaining; DWORD dwInstallSecsRemaining; } INSTALLPROGRESS; enum InstallStatus { INSTALLSTATUS_INITIALIZING, INSTALLSTATUS_DEPENDENCY, INSTALLSTATUS_DOWNLOADING, INSTALLSTATUS_COPYING, INSTALLSTATUS_RETRYING, INSTALLSTATUS_CHECKINGTRUST, INSTALLSTATUS_EXTRACTING, INSTALLSTATUS_RUNNING, INSTALLSTATUS_FINISHED, INSTALLSTATUS_DOWNLOADFINISHED }; // defines for engine problems (OnEngineProblem) #define ENGINEPROBLEM_DOWNLOADFAIL 0x00000001 // Actions particular to ENGINEPROBLEM_DOWNLOAD #define DOWNLOADFAIL_RETRY 0x00000001 #define STOPINSTALL_REBOOTNEEDED 0x00000001 #define STOPINSTALL_REBOOTREFUSED 0x00000002 DEFINE_GUID(IID_IInstallEngineCallback,0x6E449685L,0xC509,0x11CF,0xAA,0xFA,0x00,0xAA,0x00,0xB6,0x01,0x5C); #undef INTERFACE #define INTERFACE IInstallEngineCallback DECLARE_INTERFACE_(IInstallEngineCallback, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(OnEngineStatusChange)(THIS_ DWORD dwEngineStatus, DWORD substatus) PURE; STDMETHOD(OnStartInstall)(THIS_ DWORD dwDLSize, DWORD dwInstallSize) PURE; STDMETHOD(OnStartComponent)(THIS_ LPCSTR pszID, DWORD dwDLSize, DWORD dwInstallSize, LPCSTR pszString) PURE; STDMETHOD(OnComponentProgress)(THIS_ LPCSTR pszID, DWORD dwPhase, LPCSTR pszString, LPCSTR pszMsgString, ULONG progress, ULONG themax) PURE; STDMETHOD(OnStopComponent)(THIS_ LPCSTR pszID, HRESULT hError, DWORD dwPhase, LPCSTR pszString, DWORD dwStatus) PURE; STDMETHOD(OnStopInstall)(THIS_ HRESULT hrError, LPCSTR szError, DWORD dwStatus) PURE; STDMETHOD(OnEngineProblem)(THIS_ DWORD dwEngineProblem, LPDWORD dwAction) PURE; }; DEFINE_GUID(IID_IInstallEngine,0x6E449684L,0xC509,0x11CF,0xAA,0xFA,0x00,0xAA,0x00,0xB6,0x01,0x5C); #undef INTERFACE #define INTERFACE IInstallEngine DECLARE_INTERFACE_(IInstallEngine , IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // Methods to set engine up for install STDMETHOD(GetEngineStatus)(THIS_ DWORD *theenginestatus) PURE; STDMETHOD(SetCifFile)(THIS_ LPCSTR pszCabName, LPCSTR pszCifName) PURE; STDMETHOD(DownloadComponents)(THIS_ DWORD dwFlags) PURE; STDMETHOD(InstallComponents)(THIS_ DWORD dwFlags) PURE; STDMETHOD(EnumInstallIDs)(THIS_ UINT uIndex, LPSTR *ppszID) PURE; STDMETHOD(EnumDownloadIDs)(THIS_ UINT uIndex, LPSTR *ppszID) PURE; STDMETHOD(IsComponentInstalled)(THIS_ LPCSTR pszID, DWORD *pdwStatus) PURE; STDMETHOD(RegisterInstallEngineCallback)(THIS_ IInstallEngineCallback *pcb) PURE; STDMETHOD(UnregisterInstallEngineCallback)(THIS) PURE; STDMETHOD(SetAction)(THIS_ LPCSTR pszID, DWORD dwAction, DWORD dwPriority) PURE; STDMETHOD(GetSizes)(THIS_ LPCSTR pszID, COMPONENT_SIZES *pSizes) PURE; STDMETHOD(LaunchExtraCommand)(THIS_ LPCSTR pszInfName, LPCSTR pszSection) PURE; STDMETHOD(GetDisplayName)(THIS_ LPCSTR pszID, LPSTR *ppszName) PURE; // Info about the install (should be structure to fill in // like GetBindInfo (GetInstallInfo) STDMETHOD(SetBaseUrl)(THIS_ LPCSTR pszBaseName) PURE; STDMETHOD(SetDownloadDir)(THIS_ LPCSTR pszDownloadDir) PURE; STDMETHOD(SetInstallDrive)(THIS_ CHAR chDrive) PURE; STDMETHOD(SetInstallOptions)(THIS_ DWORD dwInsFlag) PURE; STDMETHOD(SetHWND)(THIS_ HWND hForUI) PURE; STDMETHOD(SetIStream)(THIS_ IStream *pstm) PURE; // Engine control during installation (seperate interface?) STDMETHOD(Abort)(THIS_ DWORD dwFlags) PURE; STDMETHOD(Suspend)(THIS) PURE; STDMETHOD(Resume)(THIS) PURE; }; DEFINE_GUID(IID_IInstallEngineTiming,0x6E449687L,0xC509,0x11CF,0xAA,0xFA,0x00,0xAA,0x00,0xB6,0x01,0x5C); #undef INTERFACE #define INTERFACE IInstallEngineTiming DECLARE_INTERFACE_(IInstallEngineTiming , IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(GetRates)(THIS_ DWORD *pdwDownload, DWORD *pdwInstall) PURE; STDMETHOD(GetInstallProgress)(THIS_ INSTALLPROGRESS *pinsprog) PURE; }; DEFINE_GUID(CLSID_InstallEngine,0x6E449686L,0xC509,0x11CF,0xAA,0xFA,0x00,0xAA,0x00,0xB6,0x01,0x5C); // The site manager interface typedef struct { UINT cbSize; LPSTR pszLang; LPSTR pszRegion; } SITEQUERYPARAMS; typedef struct { UINT cbSize; LPSTR pszUrl; LPSTR pszFriendlyName; LPSTR pszLang; LPSTR pszRegion; } DOWNLOADSITE; // {BFC880F3-7484-11d0-8309-00AA00B6015C} DEFINE_GUID(IID_IDownloadSite, 0xbfc880f3, 0x7484, 0x11d0, 0x83, 0x9, 0x0, 0xaa, 0x0, 0xb6, 0x1, 0x5c); #undef INTERFACE #define INTERFACE IDownloadSite DECLARE_INTERFACE_(IDownloadSite , IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(GetData)(THIS_ DOWNLOADSITE **pds) PURE; }; // {BFC880F0-7484-11d0-8309-00AA00B6015C} DEFINE_GUID(IID_IDownloadSiteMgr, 0xbfc880f0, 0x7484, 0x11d0, 0x83, 0x9, 0x0, 0xaa, 0x0, 0xb6, 0x1, 0x5c); #undef INTERFACE #define INTERFACE IDownloadSiteMgr DECLARE_INTERFACE_(IDownloadSiteMgr , IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Initialize)(THIS_ LPCSTR pszUrl, SITEQUERYPARAMS *pqp) PURE; STDMETHOD(EnumSites)(THIS_ DWORD dwIndex, IDownloadSite **pds) PURE; }; // {BFC880F1-7484-11d0-8309-00AA00B6015C} DEFINE_GUID(CLSID_DownloadSiteMgr, 0xbfc880f1, 0x7484, 0x11d0, 0x83, 0x9, 0x0, 0xaa, 0x0, 0xb6, 0x1, 0x5c); // defines for dwUrlFlags #define URLF_DEFAULT 0x00000000 #define URLF_EXTRACT 0x00000001 #define URLF_RELATIVEURL 0x00000002 #define URLF_DELETE_AFTER_EXTRACT 0x00000004 // types of dependancies #define DEP_NEVER_INSTALL 'N' #define DEP_INSTALL 'I' // platform defines #define PLATFORM_WIN95 0x00000001 #define PLATFORM_WIN98 0x00000002 #define PLATFORM_NT4 0x00000004 #define PLATFORM_NT5 0x00000008 #define PLATFORM_NT4ALPHA 0x00000010 #define PLATFORM_NT5ALPHA 0x00000020 #define PLATFORM_MILLEN 0x00000040 #define PLATFORM_ALL PLATFORM_WIN95 | PLATFORM_WIN98 | PLATFORM_NT4 | PLATFORM_NT5 | PLATFORM_NT4ALPHA | PLATFORM_NT5ALPHA | PLATFORM_MILLEN // The action to be taken on this component ((Get)SetInstallQueueStatus, SetAction enum ComponentAction { ActionNone, ActionInstall, ActionUninstall }; // Type for commands // 0 1 2 3 4 enum CommandType { InfCommand, WExtractExe, Win32Exe, InfExCommand, HRESULTWin32Exe }; #undef INTERFACE #define INTERFACE ICifComponent DECLARE_INTERFACE(ICifComponent) { // for properties STDMETHOD(GetID)(THIS_ LPSTR pszID, DWORD dwSize)PURE; STDMETHOD(GetGUID)(THIS_ LPSTR pszGUID, DWORD dwSize)PURE; STDMETHOD(GetDescription)(THIS_ LPSTR pszDesc, DWORD dwSize)PURE; STDMETHOD(GetDetails)(THIS_ LPSTR pszDetails, DWORD dwSize) PURE; STDMETHOD(GetUrl)(THIS_ UINT uUrlNum, LPSTR pszUrl, DWORD dwSize, LPDWORD pdwUrlFlags) PURE; STDMETHOD(GetFileExtractList)(THIS_ UINT uUrlNum, LPSTR pszExtract, DWORD dwSize) PURE; STDMETHOD(GetUrlCheckRange)(THIS_ UINT uUrlNum, LPDWORD pdwMin, LPDWORD pdwMax) PURE; STDMETHOD(GetCommand)(THIS_ UINT uCmdNum, LPSTR pszCmd, DWORD dwCmdSize, LPSTR pszSwitches, DWORD dwSwitchSize, LPDWORD pdwType) PURE; STDMETHOD(GetVersion)(THIS_ LPDWORD pdwVersion, LPDWORD pdwBuild) PURE; STDMETHOD(GetLocale)(THIS_ LPSTR pszLocale, DWORD dwSize) PURE; STDMETHOD(GetUninstallKey)(THIS_ LPSTR pszKey, DWORD dwSize) PURE; STDMETHOD(GetInstalledSize)(THIS_ LPDWORD pdwWin, LPDWORD pdwApp) PURE; STDMETHOD_(DWORD, GetDownloadSize)(THIS) PURE; STDMETHOD_(DWORD, GetExtractSize)(THIS) PURE; STDMETHOD(GetSuccessKey)(THIS_ LPSTR pszKey, DWORD dwSize) PURE; STDMETHOD(GetProgressKeys)(THIS_ LPSTR pszProgress, DWORD dwProgSize, LPSTR pszCancel, DWORD dwCancelSize) PURE; STDMETHOD(IsActiveSetupAware)(THIS) PURE; STDMETHOD(IsRebootRequired)(THIS) PURE; STDMETHOD(RequiresAdminRights)(THIS) PURE; STDMETHOD_(DWORD, GetPriority)(THIS) PURE; STDMETHOD(GetDependency)(THIS_ UINT uDepNum, LPSTR pszID, DWORD dwBuf, char *pchType, LPDWORD pdwVer, LPDWORD pdwBuild) PURE; STDMETHOD_(DWORD, GetPlatform)(THIS) PURE; STDMETHOD(GetMode)(THIS_ UINT uModeNum, LPSTR pszMode, DWORD dwSize) PURE; STDMETHOD(GetGroup)(THIS_ LPSTR pszID, DWORD dwSize) PURE; STDMETHOD(IsUIVisible)(THIS) PURE; STDMETHOD(GetPatchID)(THIS_ LPSTR pszID, DWORD dwSize) PURE; STDMETHOD(GetDetVersion)(THIS_ LPSTR pszDLL, DWORD dwdllSize, LPSTR pszEntry, DWORD dwentSize) PURE; STDMETHOD(GetTreatAsOneComponents)(THIS_ UINT uNum, LPSTR pszID, DWORD dwBuf) PURE; STDMETHOD(GetCustomData)(LPSTR pszKey, LPSTR pszData, DWORD dwSize) PURE; // access to state STDMETHOD_(DWORD, IsComponentInstalled)(THIS) PURE; STDMETHOD(IsComponentDownloaded)(THIS) PURE; STDMETHOD_(DWORD, IsThisVersionInstalled)(THIS_ DWORD dwAskVer, DWORD dwAskBld, LPDWORD pdwVersion, LPDWORD pdwBuild) PURE; STDMETHOD_(DWORD, GetInstallQueueState)(THIS) PURE; STDMETHOD(SetInstallQueueState)(THIS_ DWORD dwState) PURE; STDMETHOD_(DWORD, GetActualDownloadSize)(THIS) PURE; STDMETHOD_(DWORD, GetCurrentPriority)(THIS) PURE; STDMETHOD(SetCurrentPriority)(THIS_ DWORD dwPriority) PURE; }; DECLARE_INTERFACE_(ICifRWComponent, ICifComponent) { STDMETHOD(SetGUID)(THIS_ LPCSTR pszGUID)PURE; STDMETHOD(SetDescription)(THIS_ LPCSTR pszDesc)PURE; STDMETHOD(SetUrl)(THIS_ UINT uUrlNum, LPCSTR pszUrl, DWORD dwUrlFlags) PURE; STDMETHOD(SetCommand)(THIS_ UINT uCmdNum, LPCSTR pszCmd, LPCSTR pszSwitches, DWORD dwType) PURE; STDMETHOD(SetVersion)(THIS_ LPCSTR pszVersion) PURE; STDMETHOD(SetUninstallKey)(THIS_ LPCSTR pszKey) PURE; STDMETHOD(SetInstalledSize)(THIS_ DWORD dwWin, DWORD dwApp) PURE; STDMETHOD(SetDownloadSize)(THIS_ DWORD) PURE; STDMETHOD(SetExtractSize)(THIS_ DWORD) PURE; STDMETHOD(DeleteDependency)(THIS_ LPCSTR pszID, char chType) PURE; STDMETHOD(AddDependency)(THIS_ LPCSTR pszID, char chType) PURE; STDMETHOD(SetUIVisible)(THIS_ BOOL) PURE; STDMETHOD(SetGroup)(THIS_ LPCSTR pszID) PURE; STDMETHOD(SetPlatform)(THIS_ DWORD) PURE; STDMETHOD(SetPriority)(THIS_ DWORD) PURE; STDMETHOD(SetReboot)(THIS_ BOOL) PURE; STDMETHOD(DeleteFromModes)(THIS_ LPCSTR pszMode) PURE; STDMETHOD(AddToMode)(THIS_ LPCSTR pszMode) PURE; STDMETHOD(SetModes)(THIS_ LPCSTR pszMode) PURE; STDMETHOD(CopyComponent)(THIS_ LPCSTR pszCifFile) PURE; STDMETHOD(AddToTreatAsOne)(THIS_ LPCSTR pszCompID) PURE; STDMETHOD(SetDetails)(THIS_ LPCSTR pszDesc) PURE; }; DECLARE_INTERFACE_(IEnumCifComponents, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // enum methods STDMETHOD(Next)(THIS_ ICifComponent **) PURE; STDMETHOD(Reset)(THIS) PURE; }; DECLARE_INTERFACE(ICifGroup) { // for properties STDMETHOD(GetID)(THIS_ LPSTR pszID, DWORD dwSize) PURE; STDMETHOD(GetDescription)(THIS_ LPSTR pszDesc, DWORD dwSize) PURE; STDMETHOD_(DWORD, GetPriority)(THIS) PURE; STDMETHOD(EnumComponents)(THIS_ IEnumCifComponents **, DWORD dwFilter, LPVOID pv) PURE; STDMETHOD_(DWORD, GetCurrentPriority)(THIS) PURE; }; DECLARE_INTERFACE_(ICifRWGroup, ICifGroup) { STDMETHOD(SetDescription)(THIS_ LPCSTR pszDesc) PURE; STDMETHOD(SetPriority)(THIS_ DWORD) PURE; STDMETHOD(SetDetails)(THIS_ LPCSTR pszDetails) PURE; }; DECLARE_INTERFACE_(IEnumCifGroups, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // enum methods STDMETHOD(Next)(THIS_ ICifGroup **) PURE; STDMETHOD(Reset)(THIS) PURE; }; DECLARE_INTERFACE(ICifMode) { // for properties STDMETHOD(GetID)(THIS_ LPSTR pszID, DWORD dwSize) PURE; STDMETHOD(GetDescription)(THIS_ LPSTR pszDesc, DWORD dwSize) PURE; STDMETHOD(GetDetails)(THIS_ LPSTR pszDetails, DWORD dwSize) PURE; STDMETHOD(EnumComponents)(THIS_ IEnumCifComponents **, DWORD dwFilter, LPVOID pv) PURE; }; DECLARE_INTERFACE_(ICifRWMode, ICifMode) { STDMETHOD(SetDescription)(THIS_ LPCSTR pszDesc) PURE; STDMETHOD(SetDetails)(THIS_ LPCSTR pszDetails) PURE; }; DECLARE_INTERFACE_(IEnumCifModes, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // enum methods STDMETHOD(Next)(THIS_ ICifMode **) PURE; STDMETHOD(Reset)(THIS) PURE; }; DEFINE_GUID(IID_ICifFile,0x6E449688L,0xC509,0x11CF,0xAA,0xFA,0x00,0xAA,0x00,0xB6,0x01,0x5C); DECLARE_INTERFACE_(ICifFile, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(EnumComponents)(THIS_ IEnumCifComponents **, DWORD dwFilter, LPVOID pv) PURE; STDMETHOD(FindComponent)(THIS_ LPCSTR pszID, ICifComponent **p) PURE; STDMETHOD(EnumGroups)(THIS_ IEnumCifGroups **, DWORD dwFilter, LPVOID pv) PURE; STDMETHOD(FindGroup)(THIS_ LPCSTR pszID, ICifGroup **p) PURE; STDMETHOD(EnumModes)(THIS_ IEnumCifModes **, DWORD dwFilter, LPVOID pv) PURE; STDMETHOD(FindMode)(THIS_ LPCSTR pszID, ICifMode **p) PURE; STDMETHOD(GetDescription)(THIS_ LPSTR pszDesc, DWORD dwSize) PURE; STDMETHOD(GetDetDlls)(THIS_ LPSTR pszDlls, DWORD dwSize) PURE; }; DECLARE_INTERFACE_(ICifRWFile, ICifFile) { STDMETHOD(SetDescription)(THIS_ LPCSTR pszDesc) PURE; STDMETHOD(CreateComponent)(THIS_ LPCSTR pszID, ICifRWComponent **p) PURE; STDMETHOD(CreateGroup)(THIS_ LPCSTR pszID, ICifRWGroup **p) PURE; STDMETHOD(CreateMode)(THIS_ LPCSTR pszID, ICifRWMode **p) PURE; STDMETHOD(DeleteComponent)(THIS_ LPCSTR pszID) PURE; STDMETHOD(DeleteGroup)(THIS_ LPCSTR pszID) PURE; STDMETHOD(DeleteMode)(THIS_ LPCSTR pszID) PURE; STDMETHOD(Flush)(THIS) PURE; }; /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Detection DLL // Returns from DetectVersion #define DET_NOTINSTALLED 0 #define DET_INSTALLED 1 #define DET_NEWVERSIONINSTALLED 2 #define DET_OLDVERSIONINSTALLED 3 // Function prototype typedef struct { DWORD dwSize; LPDWORD pdwInstalledVer; LPDWORD pdwInstalledBuild; LPSTR pszGUID; LPSTR pszLocale; DWORD dwAskVer; DWORD dwAskBuild; ICifFile *pCifFile; ICifComponent *pCifComp; } DETECTION_STRUCT; typedef DWORD (WINAPI *DETECTVERSION)(DETECTION_STRUCT *pDetectionStruct); /////////////////////////////////////////////////////////////////////////////////////////////////////////// DEFINE_GUID(IID_IInstallEngine2,0x6E449689L,0xC509,0x11CF,0xAA,0xFA,0x00,0xAA,0x00,0xB6,0x01,0x5C); #undef INTERFACE #define INTERFACE IInstallEngine2 DECLARE_INTERFACE_(IInstallEngine2 , IInstallEngine) { STDMETHOD(SetLocalCif)(THIS_ LPCSTR pszCif) PURE; STDMETHOD(GetICifFile)(THIS_ ICifFile **picif) PURE; }; HRESULT WINAPI GetICifFileFromFile(ICifFile **, LPCSTR pszFile); HRESULT WINAPI GetICifRWFileFromFile(ICifRWFile **, LPCSTR pszFile); #ifdef __cplusplus } #endif #define _INSENG_H_ #endif //