xref: /reactos/sdk/include/psdk/inseng.idl (revision 8a978a17)
1/*
2 * Copyright 2015 Jacek Caban for CodeWeavers
3 * Copyright 2016 Michael M�ller
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20#ifndef __WIDL__
21#define threading(model)
22#endif
23
24cpp_quote("#if 0")
25import "unknwn.idl";
26cpp_quote("#endif")
27
28interface IStream;
29
30cpp_quote("#define MAX_ID_LENGTH            48")
31cpp_quote("#define MAX_DISPLAYNAME_LENGTH   128")
32
33cpp_quote("#define URLF_DEFAULT                 0x0")
34cpp_quote("#define URLF_EXTRACT                 0x1")
35cpp_quote("#define URLF_RELATIVEURL             0x2")
36cpp_quote("#define URLF_DELETE_AFTER_EXTRACT    0x4")
37
38cpp_quote("#define ENGINESTATUS_NOTREADY    0x0")
39cpp_quote("#define ENGINESTATUS_LOADING     0x1")
40cpp_quote("#define ENGINESTATUS_INSTALLING  0x2")
41cpp_quote("#define ENGINESTATUS_READY       0x3")
42
43cpp_quote("#define SETACTION_NONE       0x0")
44cpp_quote("#define SETACTION_INSTALL    0x1")
45
46cpp_quote("#define INSTALLOPTIONS_NOCACHE               0x01")
47cpp_quote("#define INSTALLOPTIONS_DOWNLOAD              0x02")
48cpp_quote("#define INSTALLOPTIONS_INSTALL               0x04")
49cpp_quote("#define INSTALLOPTIONS_DONTALLOWXPLATFORM    0x08")
50cpp_quote("#define INSTALLOPTIONS_FORCEDEPENDENCIES     0x10")
51
52cpp_quote("#define EXECUTEJOB_SILENT                0x01")
53cpp_quote("#define EXECUTEJOB_DELETE_JOB            0x02")
54cpp_quote("#define EXECUTEJOB_VERIFYFILES           0x08")
55cpp_quote("#define EXECUTEJOB_IGNORETRUST           0x10")
56cpp_quote("#define EXECUTEJOB_IGNOREDOWNLOADERROR   0x20")
57cpp_quote("#define EXECUTEJOB_DONTALLOWCANCEL       0x40")
58
59cpp_quote("#define ENGINEPROBLEM_DOWNLOADFAIL   0x1")
60
61cpp_quote("#define PLATFORM_WIN95       0x01")
62cpp_quote("#define PLATFORM_WIN98       0x02")
63cpp_quote("#define PLATFORM_NT4         0x04")
64cpp_quote("#define PLATFORM_NT5         0x08")
65cpp_quote("#define PLATFORM_NT4ALPHA    0x10")
66cpp_quote("#define PLATFORM_NT5ALPHA    0x20")
67cpp_quote("#define PLATFORM_MILLEN      0x40")
68cpp_quote("#define PLATFORM_ALL         (PLATFORM_WIN95 | PLATFORM_WIN98 | PLATFORM_NT4 | PLATFORM_NT5 | PLATFORM_NT4ALPHA | PLATFORM_NT5ALPHA | PLATFORM_MILLEN)")
69
70enum InstallStatus
71{
72    INSTALLSTATUS_INITIALIZING,
73    INSTALLSTATUS_DEPENDENCY,
74    INSTALLSTATUS_DOWNLOADING,
75    INSTALLSTATUS_COPYING,
76    INSTALLSTATUS_RETRYING,
77    INSTALLSTATUS_CHECKINGTRUST,
78    INSTALLSTATUS_EXTRACTING,
79    INSTALLSTATUS_RUNNING,
80    INSTALLSTATUS_FINISHED,
81    INSTALLSTATUS_DOWNLOADFINISHED,
82};
83
84enum ComponentAction
85{
86    ActionNone,
87    ActionInstall,
88    ActionUninstall,
89};
90
91[
92    object,
93    local,
94    pointer_default(unique)
95]
96interface ICifComponent
97{
98    HRESULT GetID(char *id, DWORD size);
99    HRESULT GetGUID(char *guid, DWORD size);
100    HRESULT GetDescription(char *desc, DWORD size);
101    HRESULT GetDetails(char *details, DWORD size);
102    HRESULT GetUrl(UINT index, char *url, DWORD size, DWORD *flags);
103    HRESULT GetFileExtractList(UINT index, char *extract, DWORD size);
104    HRESULT GetUrlCheckRange(UINT index, DWORD *min, DWORD *max);
105    HRESULT GetCommand(UINT index, char *cmd, DWORD cmd_size, char *switches, DWORD switch_size, DWORD *type);
106    HRESULT GetVersion(DWORD *version, DWORD *build);
107    HRESULT GetLocale(char *pszLocale, DWORD size);
108    HRESULT GetUninstallKey(char *key, DWORD size);
109    HRESULT GetInstalledSize(DWORD *win, DWORD *app);
110    DWORD GetDownloadSize();
111    DWORD GetExtractSize();
112    HRESULT GetSuccessKey(char *key, DWORD size);
113    HRESULT GetProgressKeys(char *progress, DWORD progress_size, char *cancel, DWORD cancel_size);
114    HRESULT IsActiveSetupAware();
115    HRESULT IsRebootRequired();
116    HRESULT RequiresAdminRights();
117    DWORD GetPriority();
118    HRESULT GetDependency(UINT index, char *id, DWORD buf, char *type, DWORD *ver, DWORD *build);
119    DWORD GetPlatform();
120    HRESULT GetMode(UINT index, char *mode, DWORD size);
121    HRESULT GetGroup(char *id, DWORD size);
122    HRESULT IsUIVisible();
123    HRESULT GetPatchID(char *id, DWORD size);
124    HRESULT GetDetVersion(char *dll, DWORD dll_size, char *entry, DWORD entry_size);
125    HRESULT GetTreatAsOneComponents(UINT index, char *id, DWORD buf);
126    HRESULT GetCustomData(char *key, char *data, DWORD size);
127    DWORD IsComponentInstalled();
128    HRESULT IsComponentDownloaded();
129    DWORD IsThisVersionInstalled(DWORD version, DWORD build, DWORD *ret_version, DWORD *ret_build);
130    DWORD GetInstallQueueState();
131    HRESULT SetInstallQueueState(DWORD state);
132    DWORD GetActualDownloadSize();
133    DWORD GetCurrentPriority();
134    HRESULT SetCurrentPriority(DWORD priority);
135};
136
137[
138    object,
139    local,
140    pointer_default(unique)
141]
142interface ICifRWComponent : ICifComponent
143{
144    HRESULT SetGUID(const char *guid);
145    HRESULT SetDescription(const char *desc);
146    HRESULT SetUrl(UINT index, const char *url, DWORD url_flags);
147    HRESULT SetCommand(UINT index, const char *cmd, const char *switches, DWORD type);
148    HRESULT SetVersion(const char *version);
149    HRESULT SetUninstallKey(const char *key);
150    HRESULT SetInstalledSize(DWORD win, DWORD app);
151    HRESULT SetDownloadSize(DWORD size);
152    HRESULT SetExtractSize(DWORD size);
153    HRESULT DeleteDependency(const char *id, char type);
154    HRESULT AddDependency(const char *id, char type);
155    HRESULT SetUIVisible(BOOL visible);
156    HRESULT SetGroup(const char *id);
157    HRESULT SetPlatform(DWORD platform);
158    HRESULT SetPriority(DWORD priority);
159    HRESULT SetReboot(BOOL reboot);
160    HRESULT DeleteFromModes(const char *mode);
161    HRESULT AddToMode(const char *mode);
162    HRESULT SetModes(const char *mode);
163    HRESULT CopyComponent(const char *ciffile);
164    HRESULT AddToTreatAsOne(const char *compid);
165    HRESULT SetDetails(const char *desc);
166};
167
168[
169    object,
170    local,
171    pointer_default(unique)
172]
173interface IEnumCifComponents : IUnknown
174{
175    HRESULT Next(ICifComponent **);
176    HRESULT Reset();
177};
178
179[
180    object,
181    local,
182    pointer_default(unique)
183]
184interface ICifGroup
185{
186    HRESULT GetID(char *id, DWORD size);
187    HRESULT GetDescription(char *desc, DWORD size);
188    DWORD GetPriority();
189
190    HRESULT EnumComponents(IEnumCifComponents **, DWORD filter, void *pv);
191    DWORD GetCurrentPriority();
192};
193
194[
195    object,
196    local,
197    pointer_default(unique)
198]
199interface ICifRWGroup : ICifGroup
200{
201   HRESULT SetDescription(const char *desc);
202   HRESULT SetPriority(DWORD priority);
203   HRESULT SetDetails(const char *details);
204};
205
206[
207    object,
208    local,
209    pointer_default(unique)
210]
211interface IEnumCifGroups : IUnknown
212{
213    HRESULT Next(ICifGroup **);
214    HRESULT Reset();
215};
216
217[
218    object,
219    local,
220    pointer_default(unique)
221]
222interface ICifMode
223{
224    HRESULT GetID(char *id, DWORD size);
225    HRESULT GetDescription(char *desc, DWORD size);
226    HRESULT GetDetails(char *details, DWORD size);
227
228    HRESULT EnumComponents(IEnumCifComponents **, DWORD filter, void *pv);
229};
230
231[
232    object,
233    local,
234    pointer_default(unique)
235]
236interface ICifRWMode : ICifMode
237{
238    HRESULT SetDescription(const char *desc);
239    HRESULT SetDetails(const char *details);
240};
241
242[
243    object,
244    local,
245    pointer_default(unique)
246]
247interface IEnumCifModes : IUnknown
248{
249    HRESULT Next(ICifMode **);
250    HRESULT Reset();
251};
252
253typedef struct
254{
255    DWORD cbSize;
256    DWORD dwInstallSize;
257    DWORD dwWinDriveSize;
258    DWORD dwDownloadSize;
259    DWORD dwDependancySize;
260    DWORD dwInstallDriveReq;
261    DWORD dwWinDriveReq;
262    DWORD dwDownloadDriveReq;
263    char chWinDrive;
264    char chInstallDrive;
265    char chDownloadDrive;
266    DWORD dwTotalDownloadSize;
267} COMPONENT_SIZES;
268
269typedef struct
270{
271    DWORD cbSize;
272    DWORD dwDownloadKBRemaining;
273    DWORD dwInstallKBRemaining;
274    DWORD dwDownloadSecsRemaining;
275    DWORD dwInstallSecsRemaining;
276} INSTALLPROGRESS;
277
278[
279    uuid(6e449688-c509-11cf-aafa-00aa00b6015c),
280    local
281]
282interface ICifFile : IUnknown
283{
284    HRESULT EnumComponents(IEnumCifComponents **enum_components, DWORD filter, void *pv);
285    HRESULT FindComponent(const char *id, ICifComponent **p);
286    HRESULT EnumGroups(IEnumCifGroups **enum_groups, DWORD filter, void *pv);
287    HRESULT FindGroup(const char *id, ICifGroup **p);
288    HRESULT EnumModes(IEnumCifModes **cuf_modes, DWORD filter, void *pv);
289    HRESULT FindMode(const char *id, ICifMode **p);
290    HRESULT GetDescription(char *desc, DWORD size);
291    HRESULT GetDetDlls(char *dlls, DWORD size);
292}
293
294[
295    object,
296    local,
297    pointer_default(unique)
298]
299interface ICifRWFile : ICifFile
300{
301    HRESULT SetDescription(const char *desc);
302    HRESULT CreateComponent(const char *id, ICifRWComponent **p);
303    HRESULT CreateGroup(const char *id, ICifRWGroup **p);
304    HRESULT CreateMode(const char *id, ICifRWMode **p);
305    HRESULT DeleteComponent(const char *id);
306    HRESULT DeleteGroup(const char *id);
307    HRESULT DeleteMode(const char *id);
308    HRESULT Flush();
309}
310
311[
312    uuid(6e449685-c509-11cf-aafa-00aa00b6015c),
313    local
314]
315interface IInstallEngineCallback : IUnknown
316{
317   HRESULT OnEngineStatusChange(DWORD status, DWORD substatus);
318   HRESULT OnStartInstall(DWORD dl_size, DWORD install_size);
319   HRESULT OnStartComponent(const char *id, DWORD dl_size, DWORD install_size, const char *string);
320   HRESULT OnComponentProgress(const char *id, DWORD phrase, const char *string,
321           const char *msg_string, ULONG progress, ULONG max);
322   HRESULT OnStopComponent(const char *id, HRESULT error, DWORD phrase, const char *string, DWORD status);
323   HRESULT OnStopInstall(HRESULT error, const char *error_string, DWORD status);
324   HRESULT OnEngineProblem(DWORD problem, DWORD *action);
325}
326
327[
328    uuid(6e449684-c509-11cf-aafa-00aa00b6015c),
329    local
330]
331interface IInstallEngine : IUnknown
332{
333   HRESULT GetEngineStatus(DWORD *status);
334   HRESULT SetCifFile(const char *cab_name, const char *cif_name);
335   HRESULT DownloadComponents(DWORD flags);
336   HRESULT InstallComponents(DWORD flags);
337   HRESULT EnumInstallIDs(UINT index, char **id);
338   HRESULT EnumDownloadIDs(UINT index, char **id);
339   HRESULT IsComponentInstalled(const char *id, DWORD *status);
340   HRESULT RegisterInstallEngineCallback(IInstallEngineCallback *callback);
341   HRESULT UnregisterInstallEngineCallback();
342   HRESULT SetAction(const char *id, DWORD action, DWORD priority);
343   HRESULT GetSizes(const char *id, COMPONENT_SIZES *sizes);
344   HRESULT LaunchExtraCommand(const char *inf_name, const char *section);
345   HRESULT GetDisplayName(const char *id, const char *name);
346   HRESULT SetBaseUrl(const char *base_name);
347   HRESULT SetDownloadDir(const char *download_dir);
348   HRESULT SetInstallDrive(char drive);
349   HRESULT SetInstallOptions(DWORD flags);
350   HRESULT SetHWND(HWND hwnd);
351   HRESULT SetIStream(IStream *stream);
352   HRESULT Abort(DWORD flags);
353   HRESULT Suspend();
354   HRESULT Resume();
355}
356
357[
358    uuid(6e449689-c509-11cf-aafa-00aa00b6015c),
359    local
360]
361interface IInstallEngine2 : IInstallEngine
362{
363    HRESULT SetLocalCif(const char *cif);
364    HRESULT GetICifFile(ICifFile **cif_file);
365}
366
367[
368    uuid(6e449687-c509-11cf-aafa-00aa00b6015c),
369    local
370]
371interface IInstallEngineTiming : IUnknown
372{
373    HRESULT GetRates(DWORD *download, DWORD *install);
374    HRESULT GetInstallProgress(INSTALLPROGRESS *progress);
375}
376
377[
378    helpstring("Microsoft Active Setup Engine"),
379    threading(apartment),
380    uuid(6e449686-c509-11cf-aafa-00aa00b6015c)
381]
382coclass InstallEngine { }
383
384[
385    helpstring("Download Site Manager"),
386    threading(apartment),
387    uuid(bfc880f1-7484-11d0-8309-00aa00b6015c)
388]
389coclass DownloadSiteMgr { }
390
391cpp_quote("HRESULT WINAPI GetICifFileFromFile(ICifFile **, const char *);")
392cpp_quote("HRESULT WINAPI GetICifRWFileFromFile(ICifRWFile **, const char *);")
393