2015-07-19 13:26:11 +00:00
|
|
|
|
/*
|
|
|
|
|
* Copyright 2015 Jacek Caban for CodeWeavers
|
2016-11-17 22:42:31 +00:00
|
|
|
|
* Copyright 2016 Michael M<>ller
|
2015-07-19 13:26:11 +00:00
|
|
|
|
*
|
|
|
|
|
* 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;
|
|
|
|
|
|
2016-11-17 22:42:31 +00:00
|
|
|
|
cpp_quote("#define MAX_ID_LENGTH 48")
|
|
|
|
|
cpp_quote("#define MAX_DISPLAYNAME_LENGTH 128")
|
2015-07-19 13:26:11 +00:00
|
|
|
|
|
2016-11-17 22:42:31 +00:00
|
|
|
|
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
|
|
|
|
|
{
|
2015-07-19 13:26:11 +00:00
|
|
|
|
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;
|
|
|
|
|
|
2016-11-17 22:42:31 +00:00
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
DWORD cbSize;
|
|
|
|
|
DWORD dwDownloadKBRemaining;
|
|
|
|
|
DWORD dwInstallKBRemaining;
|
|
|
|
|
DWORD dwDownloadSecsRemaining;
|
|
|
|
|
DWORD dwInstallSecsRemaining;
|
|
|
|
|
} INSTALLPROGRESS;
|
|
|
|
|
|
2015-07-19 13:26:11 +00:00
|
|
|
|
[
|
|
|
|
|
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);
|
2016-11-17 22:42:31 +00:00
|
|
|
|
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();
|
2015-07-19 13:26:11 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[
|
|
|
|
|
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);
|
2016-11-17 22:42:31 +00:00
|
|
|
|
HRESULT OnEngineProblem(DWORD problem, DWORD *action);
|
2015-07-19 13:26:11 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
2016-11-17 22:42:31 +00:00
|
|
|
|
[
|
|
|
|
|
uuid(6e449687-c509-11cf-aafa-00aa00b6015c),
|
|
|
|
|
local
|
|
|
|
|
]
|
|
|
|
|
interface IInstallEngineTiming : IUnknown
|
|
|
|
|
{
|
|
|
|
|
HRESULT GetRates(DWORD *download, DWORD *install);
|
|
|
|
|
HRESULT GetInstallProgress(INSTALLPROGRESS *progress);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-19 13:26:11 +00:00
|
|
|
|
[
|
|
|
|
|
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 { }
|
2016-11-17 22:42:31 +00:00
|
|
|
|
|
|
|
|
|
cpp_quote("HRESULT WINAPI GetICifFileFromFile(ICifFile **, const char *);")
|
|
|
|
|
cpp_quote("HRESULT WINAPI GetICifRWFileFromFile(ICifRWFile **, const char *);")
|