[PSDK]
[reactos.git] / reactos / sdk / include / psdk / inseng.idl
1 /*
2 * Copyright 2015 Jacek Caban for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #ifndef __WIDL__
20 #define threading(model)
21 #endif
22
23 cpp_quote("#if 0")
24 import "unknwn.idl";
25 cpp_quote("#endif")
26
27 interface IStream;
28
29 /* FIXME: Add full declarations. */
30 interface ICifComponent;
31 interface IEnumCifComponents;
32 interface ICifGroup;
33 interface IEnumCifGroups;
34 interface ICifMode;
35 interface IEnumCifModes;
36
37 typedef struct {
38 DWORD cbSize;
39 DWORD dwInstallSize;
40 DWORD dwWinDriveSize;
41 DWORD dwDownloadSize;
42 DWORD dwDependancySize;
43 DWORD dwInstallDriveReq;
44 DWORD dwWinDriveReq;
45 DWORD dwDownloadDriveReq;
46 char chWinDrive;
47 char chInstallDrive;
48 char chDownloadDrive;
49 DWORD dwTotalDownloadSize;
50 } COMPONENT_SIZES;
51
52 [
53 uuid(6e449688-c509-11cf-aafa-00aa00b6015c),
54 local
55 ]
56 interface ICifFile : IUnknown
57 {
58 HRESULT EnumComponents(IEnumCifComponents **enum_components, DWORD filter, void *pv);
59 HRESULT FindComponent(const char *id, ICifComponent **p);
60 HRESULT EnumGroups(IEnumCifGroups **enum_groups, DWORD filter, void *pv);
61 HRESULT FindGroup(const char *id, ICifGroup **p);
62 HRESULT EnumModes(IEnumCifModes **cuf_modes, DWORD filter, void *pv);
63 HRESULT FindMode(const char *id, ICifMode **p);
64 HRESULT GetDescription(char *desc, DWORD size);
65 HRESULT GetDetDlls(char **dlls, DWORD size);
66 }
67
68 [
69 uuid(6e449685-c509-11cf-aafa-00aa00b6015c),
70 local
71 ]
72 interface IInstallEngineCallback : IUnknown
73 {
74 HRESULT OnEngineStatusChange(DWORD status, DWORD substatus);
75 HRESULT OnStartInstall(DWORD dl_size, DWORD install_size);
76 HRESULT OnStartComponent(const char *id, DWORD dl_size, DWORD install_size, const char *string);
77 HRESULT OnComponentProgress(const char *id, DWORD phrase, const char *string,
78 const char *msg_string, ULONG progress, ULONG max);
79 HRESULT OnStopComponent(const char *id, HRESULT error, DWORD phrase, const char *string, DWORD status);
80 HRESULT OnStopInstall(HRESULT error, const char *error_string, DWORD status);
81 HRESULT OnEngineProblem(DWORD problem, LPDWORD action);
82 }
83
84 [
85 uuid(6e449684-c509-11cf-aafa-00aa00b6015c),
86 local
87 ]
88 interface IInstallEngine : IUnknown
89 {
90 HRESULT GetEngineStatus(DWORD *status);
91 HRESULT SetCifFile(const char *cab_name, const char *cif_name);
92 HRESULT DownloadComponents(DWORD flags);
93 HRESULT InstallComponents(DWORD flags);
94 HRESULT EnumInstallIDs(UINT index, char **id);
95 HRESULT EnumDownloadIDs(UINT index, char **id);
96 HRESULT IsComponentInstalled(const char *id, DWORD *status);
97 HRESULT RegisterInstallEngineCallback(IInstallEngineCallback *callback);
98 HRESULT UnregisterInstallEngineCallback();
99 HRESULT SetAction(const char *id, DWORD action, DWORD priority);
100 HRESULT GetSizes(const char *id, COMPONENT_SIZES *sizes);
101 HRESULT LaunchExtraCommand(const char *inf_name, const char *section);
102 HRESULT GetDisplayName(const char *id, const char *name);
103 HRESULT SetBaseUrl(const char *base_name);
104 HRESULT SetDownloadDir(const char *download_dir);
105 HRESULT SetInstallDrive(char drive);
106 HRESULT SetInstallOptions(DWORD flags);
107 HRESULT SetHWND(HWND hwnd);
108 HRESULT SetIStream(IStream *stream);
109 HRESULT Abort(DWORD flags);
110 HRESULT Suspend();
111 HRESULT Resume();
112 }
113
114 [
115 uuid(6e449689-c509-11cf-aafa-00aa00b6015c),
116 local
117 ]
118 interface IInstallEngine2 : IInstallEngine
119 {
120 HRESULT SetLocalCif(const char *cif);
121 HRESULT GetICifFile(ICifFile **cif_file);
122 }
123
124 [
125 helpstring("Microsoft Active Setup Engine"),
126 threading(apartment),
127 uuid(6e449686-c509-11cf-aafa-00aa00b6015c)
128 ]
129 coclass InstallEngine { }
130
131 [
132 helpstring("Download Site Manager"),
133 threading(apartment),
134 uuid(bfc880f1-7484-11d0-8309-00aa00b6015c)
135 ]
136 coclass DownloadSiteMgr { }