reactos/sdk/include/psdk/inseng.idl

393 lines
12 KiB
Plaintext

/*
* Copyright 2015 Jacek Caban for CodeWeavers
* Copyright 2016 Michael Müller
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __WIDL__
#define threading(model)
#endif
cpp_quote("#if 0")
import "unknwn.idl";
cpp_quote("#endif")
interface IStream;
cpp_quote("#define MAX_ID_LENGTH 48")
cpp_quote("#define MAX_DISPLAYNAME_LENGTH 128")
cpp_quote("#define URLF_DEFAULT 0x0")
cpp_quote("#define URLF_EXTRACT 0x1")
cpp_quote("#define URLF_RELATIVEURL 0x2")
cpp_quote("#define URLF_DELETE_AFTER_EXTRACT 0x4")
cpp_quote("#define ENGINESTATUS_NOTREADY 0x0")
cpp_quote("#define ENGINESTATUS_LOADING 0x1")
cpp_quote("#define ENGINESTATUS_INSTALLING 0x2")
cpp_quote("#define ENGINESTATUS_READY 0x3")
cpp_quote("#define SETACTION_NONE 0x0")
cpp_quote("#define SETACTION_INSTALL 0x1")
cpp_quote("#define INSTALLOPTIONS_NOCACHE 0x01")
cpp_quote("#define INSTALLOPTIONS_DOWNLOAD 0x02")
cpp_quote("#define INSTALLOPTIONS_INSTALL 0x04")
cpp_quote("#define INSTALLOPTIONS_DONTALLOWXPLATFORM 0x08")
cpp_quote("#define INSTALLOPTIONS_FORCEDEPENDENCIES 0x10")
cpp_quote("#define EXECUTEJOB_SILENT 0x01")
cpp_quote("#define EXECUTEJOB_DELETE_JOB 0x02")
cpp_quote("#define EXECUTEJOB_VERIFYFILES 0x08")
cpp_quote("#define EXECUTEJOB_IGNORETRUST 0x10")
cpp_quote("#define EXECUTEJOB_IGNOREDOWNLOADERROR 0x20")
cpp_quote("#define EXECUTEJOB_DONTALLOWCANCEL 0x40")
cpp_quote("#define ENGINEPROBLEM_DOWNLOADFAIL 0x1")
cpp_quote("#define PLATFORM_WIN95 0x01")
cpp_quote("#define PLATFORM_WIN98 0x02")
cpp_quote("#define PLATFORM_NT4 0x04")
cpp_quote("#define PLATFORM_NT5 0x08")
cpp_quote("#define PLATFORM_NT4ALPHA 0x10")
cpp_quote("#define PLATFORM_NT5ALPHA 0x20")
cpp_quote("#define PLATFORM_MILLEN 0x40")
cpp_quote("#define PLATFORM_ALL (PLATFORM_WIN95 | PLATFORM_WIN98 | PLATFORM_NT4 | PLATFORM_NT5 | PLATFORM_NT4ALPHA | PLATFORM_NT5ALPHA | PLATFORM_MILLEN)")
enum InstallStatus
{
INSTALLSTATUS_INITIALIZING,
INSTALLSTATUS_DEPENDENCY,
INSTALLSTATUS_DOWNLOADING,
INSTALLSTATUS_COPYING,
INSTALLSTATUS_RETRYING,
INSTALLSTATUS_CHECKINGTRUST,
INSTALLSTATUS_EXTRACTING,
INSTALLSTATUS_RUNNING,
INSTALLSTATUS_FINISHED,
INSTALLSTATUS_DOWNLOADFINISHED,
};
enum ComponentAction
{
ActionNone,
ActionInstall,
ActionUninstall,
};
[
object,
local,
pointer_default(unique)
]
interface ICifComponent
{
HRESULT GetID(char *id, DWORD size);
HRESULT GetGUID(char *guid, DWORD size);
HRESULT GetDescription(char *desc, DWORD size);
HRESULT GetDetails(char *details, DWORD size);
HRESULT GetUrl(UINT index, char *url, DWORD size, DWORD *flags);
HRESULT GetFileExtractList(UINT index, char *extract, DWORD size);
HRESULT GetUrlCheckRange(UINT index, DWORD *min, DWORD *max);
HRESULT GetCommand(UINT index, char *cmd, DWORD cmd_size, char *switches, DWORD switch_size, DWORD *type);
HRESULT GetVersion(DWORD *version, DWORD *build);
HRESULT GetLocale(char *pszLocale, DWORD size);
HRESULT GetUninstallKey(char *key, DWORD size);
HRESULT GetInstalledSize(DWORD *win, DWORD *app);
DWORD GetDownloadSize();
DWORD GetExtractSize();
HRESULT GetSuccessKey(char *key, DWORD size);
HRESULT GetProgressKeys(char *progress, DWORD progress_size, char *cancel, DWORD cancel_size);
HRESULT IsActiveSetupAware();
HRESULT IsRebootRequired();
HRESULT RequiresAdminRights();
DWORD GetPriority();
HRESULT GetDependency(UINT index, char *id, DWORD buf, char *type, DWORD *ver, DWORD *build);
DWORD GetPlatform();
HRESULT GetMode(UINT index, char *mode, DWORD size);
HRESULT GetGroup(char *id, DWORD size);
HRESULT IsUIVisible();
HRESULT GetPatchID(char *id, DWORD size);
HRESULT GetDetVersion(char *dll, DWORD dll_size, char *entry, DWORD entry_size);
HRESULT GetTreatAsOneComponents(UINT index, char *id, DWORD buf);
HRESULT GetCustomData(char *key, char *data, DWORD size);
DWORD IsComponentInstalled();
HRESULT IsComponentDownloaded();
DWORD IsThisVersionInstalled(DWORD version, DWORD build, DWORD *ret_version, DWORD *ret_build);
DWORD GetInstallQueueState();
HRESULT SetInstallQueueState(DWORD state);
DWORD GetActualDownloadSize();
DWORD GetCurrentPriority();
HRESULT SetCurrentPriority(DWORD priority);
};
[
object,
local,
pointer_default(unique)
]
interface ICifRWComponent : ICifComponent
{
HRESULT SetGUID(const char *guid);
HRESULT SetDescription(const char *desc);
HRESULT SetUrl(UINT index, const char *url, DWORD url_flags);
HRESULT SetCommand(UINT index, const char *cmd, const char *switches, DWORD type);
HRESULT SetVersion(const char *version);
HRESULT SetUninstallKey(const char *key);
HRESULT SetInstalledSize(DWORD win, DWORD app);
HRESULT SetDownloadSize(DWORD size);
HRESULT SetExtractSize(DWORD size);
HRESULT DeleteDependency(const char *id, char type);
HRESULT AddDependency(const char *id, char type);
HRESULT SetUIVisible(BOOL visible);
HRESULT SetGroup(const char *id);
HRESULT SetPlatform(DWORD platform);
HRESULT SetPriority(DWORD priority);
HRESULT SetReboot(BOOL reboot);
HRESULT DeleteFromModes(const char *mode);
HRESULT AddToMode(const char *mode);
HRESULT SetModes(const char *mode);
HRESULT CopyComponent(const char *ciffile);
HRESULT AddToTreatAsOne(const char *compid);
HRESULT SetDetails(const char *desc);
};
[
object,
local,
pointer_default(unique)
]
interface IEnumCifComponents : IUnknown
{
HRESULT Next(ICifComponent **);
HRESULT Reset();
};
[
object,
local,
pointer_default(unique)
]
interface ICifGroup
{
HRESULT GetID(char *id, DWORD size);
HRESULT GetDescription(char *desc, DWORD size);
DWORD GetPriority();
HRESULT EnumComponents(IEnumCifComponents **, DWORD filter, void *pv);
DWORD GetCurrentPriority();
};
[
object,
local,
pointer_default(unique)
]
interface ICifRWGroup : ICifGroup
{
HRESULT SetDescription(const char *desc);
HRESULT SetPriority(DWORD priority);
HRESULT SetDetails(const char *details);
};
[
object,
local,
pointer_default(unique)
]
interface IEnumCifGroups : IUnknown
{
HRESULT Next(ICifGroup **);
HRESULT Reset();
};
[
object,
local,
pointer_default(unique)
]
interface ICifMode
{
HRESULT GetID(char *id, DWORD size);
HRESULT GetDescription(char *desc, DWORD size);
HRESULT GetDetails(char *details, DWORD size);
HRESULT EnumComponents(IEnumCifComponents **, DWORD filter, void *pv);
};
[
object,
local,
pointer_default(unique)
]
interface ICifRWMode : ICifMode
{
HRESULT SetDescription(const char *desc);
HRESULT SetDetails(const char *details);
};
[
object,
local,
pointer_default(unique)
]
interface IEnumCifModes : IUnknown
{
HRESULT Next(ICifMode **);
HRESULT Reset();
};
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;
[
uuid(6e449688-c509-11cf-aafa-00aa00b6015c),
local
]
interface ICifFile : IUnknown
{
HRESULT EnumComponents(IEnumCifComponents **enum_components, DWORD filter, void *pv);
HRESULT FindComponent(const char *id, ICifComponent **p);
HRESULT EnumGroups(IEnumCifGroups **enum_groups, DWORD filter, void *pv);
HRESULT FindGroup(const char *id, ICifGroup **p);
HRESULT EnumModes(IEnumCifModes **cuf_modes, DWORD filter, void *pv);
HRESULT FindMode(const char *id, ICifMode **p);
HRESULT GetDescription(char *desc, DWORD size);
HRESULT GetDetDlls(char *dlls, DWORD size);
}
[
object,
local,
pointer_default(unique)
]
interface ICifRWFile : ICifFile
{
HRESULT SetDescription(const char *desc);
HRESULT CreateComponent(const char *id, ICifRWComponent **p);
HRESULT CreateGroup(const char *id, ICifRWGroup **p);
HRESULT CreateMode(const char *id, ICifRWMode **p);
HRESULT DeleteComponent(const char *id);
HRESULT DeleteGroup(const char *id);
HRESULT DeleteMode(const char *id);
HRESULT Flush();
}
[
uuid(6e449685-c509-11cf-aafa-00aa00b6015c),
local
]
interface IInstallEngineCallback : IUnknown
{
HRESULT OnEngineStatusChange(DWORD status, DWORD substatus);
HRESULT OnStartInstall(DWORD dl_size, DWORD install_size);
HRESULT OnStartComponent(const char *id, DWORD dl_size, DWORD install_size, const char *string);
HRESULT OnComponentProgress(const char *id, DWORD phrase, const char *string,
const char *msg_string, ULONG progress, ULONG max);
HRESULT OnStopComponent(const char *id, HRESULT error, DWORD phrase, const char *string, DWORD status);
HRESULT OnStopInstall(HRESULT error, const char *error_string, DWORD status);
HRESULT OnEngineProblem(DWORD problem, DWORD *action);
}
[
uuid(6e449684-c509-11cf-aafa-00aa00b6015c),
local
]
interface IInstallEngine : IUnknown
{
HRESULT GetEngineStatus(DWORD *status);
HRESULT SetCifFile(const char *cab_name, const char *cif_name);
HRESULT DownloadComponents(DWORD flags);
HRESULT InstallComponents(DWORD flags);
HRESULT EnumInstallIDs(UINT index, char **id);
HRESULT EnumDownloadIDs(UINT index, char **id);
HRESULT IsComponentInstalled(const char *id, DWORD *status);
HRESULT RegisterInstallEngineCallback(IInstallEngineCallback *callback);
HRESULT UnregisterInstallEngineCallback();
HRESULT SetAction(const char *id, DWORD action, DWORD priority);
HRESULT GetSizes(const char *id, COMPONENT_SIZES *sizes);
HRESULT LaunchExtraCommand(const char *inf_name, const char *section);
HRESULT GetDisplayName(const char *id, const char *name);
HRESULT SetBaseUrl(const char *base_name);
HRESULT SetDownloadDir(const char *download_dir);
HRESULT SetInstallDrive(char drive);
HRESULT SetInstallOptions(DWORD flags);
HRESULT SetHWND(HWND hwnd);
HRESULT SetIStream(IStream *stream);
HRESULT Abort(DWORD flags);
HRESULT Suspend();
HRESULT Resume();
}
[
uuid(6e449689-c509-11cf-aafa-00aa00b6015c),
local
]
interface IInstallEngine2 : IInstallEngine
{
HRESULT SetLocalCif(const char *cif);
HRESULT GetICifFile(ICifFile **cif_file);
}
[
uuid(6e449687-c509-11cf-aafa-00aa00b6015c),
local
]
interface IInstallEngineTiming : IUnknown
{
HRESULT GetRates(DWORD *download, DWORD *install);
HRESULT GetInstallProgress(INSTALLPROGRESS *progress);
}
[
helpstring("Microsoft Active Setup Engine"),
threading(apartment),
uuid(6e449686-c509-11cf-aafa-00aa00b6015c)
]
coclass InstallEngine { }
[
helpstring("Download Site Manager"),
threading(apartment),
uuid(bfc880f1-7484-11d0-8309-00aa00b6015c)
]
coclass DownloadSiteMgr { }
cpp_quote("HRESULT WINAPI GetICifFileFromFile(ICifFile **, const char *);")
cpp_quote("HRESULT WINAPI GetICifRWFileFromFile(ICifRWFile **, const char *);")