msi: Remove local patch packages when the product is removed.
[wine] / include / wuapi.idl
1 /*
2  * Copyright 2008 Hans Leidekker 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 import "oaidl.idl";
20
21 #ifndef __WIDL__
22 #define threading(model)
23 #define progid(str)
24 #define vi_progid(str)
25 #endif
26
27 [
28     helpstring("WUAPI 2.0 Type Library"),
29     uuid(b596cc9f-56e5-419e-a622-e01bb457431e),
30     version(2.0)
31 ]
32 library WUApiLib {
33
34 importlib("stdole2.tlb");
35
36 interface ICategoryCollection;
37 interface IStringCollection;
38 interface IUpdateCollection;
39 interface IUpdateDownloader;
40 interface IUpdateInstaller;
41 interface IUpdateSearcher;
42
43 typedef [public] enum tagDownloadPriority
44 {
45     dpLow    = 1,
46     dpNormal = 2,
47     dpHigh   = 3,
48 } DownloadPriority;
49
50 typedef [public] enum tagServerSelection
51 {
52     ssDefault       = 0,
53     ssManagedServer = 1,
54     ssWindowsUpdate = 2,
55     ssOthers        = 3,
56 } ServerSelection;
57
58 typedef [public] enum tagAutomaticUpdatesNotificationLevel
59 {
60     aunlNotConfigured,
61     aunlDisabled,
62     aunlNotifyBeforeDownload,
63     aunlNotifyBeforeInstallation,
64     aunlScheduledInstallation,
65 } AutomaticUpdatesNotificationLevel;
66
67 typedef [public] enum tagAutomaticUpdatesScheduledInstallationDay
68 {
69     ausidEveryDay,
70     ausidEverySunday,
71     ausidEveryMonday,
72     ausidEveryTuesday,
73     ausidEveryWednesday,
74     ausidEveryThursday,
75     ausidEveryFriday,
76     ausidEverySaturday,
77 } AutomaticUpdatesScheduledInstallationDay;
78
79 typedef [public] enum tagDownloadPhase
80 {
81     dphInitializing,
82     dphDownloading,
83     dphVerifying,
84 } DownloadPhase;
85
86 typedef [public] enum tagOperationResultCode
87 {
88     orcNotStarted,
89     orcInProgress,
90     orcSucceeded,
91     orcSucceededWithErrors,
92     orcFailed,
93     orcAborted,
94 } OperationResultCode;
95
96 typedef [public] enum tagUpdateExceptionContext
97 {
98     uecGeneral = 1,
99     uecWindowsDriver,
100     uecWindowsInstaller
101 } UpdateExceptionContext;
102
103 typedef [public] enum tagInstallationImpact
104 {
105     iiNormal,
106     iiMinor,
107     iiRequiresExclusiveHandling
108 } InstallationImpact;
109
110 typedef [public] enum tagInstallationRebootBehavior
111 {
112     irbNeverReboots,
113     irbAlwaysRequiresReboot,
114     irbCanRequestReboot
115 } InstallationRebootBehavior;
116
117 typedef [public] enum tagUpdateType
118 {
119     utSoftware = 1,
120     utDriver
121 } UpdateType;
122
123 typedef [public] enum tagUpdateOperation
124 {
125     uoInstallation = 1,
126     uoUninstallation
127 } UpdateOperation;
128
129 typedef [public] enum tagDeploymentAction
130 {
131     daNone,
132     daInstallation,
133     daUninstallation,
134     daDetection
135 } DeploymentAction;
136
137 [
138     object,
139     oleautomation,
140     dual,
141     nonextensible,
142     uuid(2ee48f22-af3c-405f-8970-f71be12ee9a2),
143     pointer_default(unique)
144 ]
145 interface IAutomaticUpdatesSettings : IDispatch
146 {
147     [propget, id(0x60020001)]
148     HRESULT NotificationLevel( [out, retval] AutomaticUpdatesNotificationLevel *retval );
149
150     [propput, id(0x60020001)]
151     HRESULT NotificationLevel( [in] AutomaticUpdatesNotificationLevel value );
152
153     [propget, id(0x60020002)]
154     HRESULT ReadOnly( [out, retval] VARIANT_BOOL *retval );
155
156     [propget, id(0x60020003)]
157     HRESULT Required( [out, retval] VARIANT_BOOL *retval );
158
159     [propget, id(0x60020004)]
160     HRESULT ScheduledInstallationDay( [out, retval] AutomaticUpdatesScheduledInstallationDay *retval );
161
162     [propput, id(0x60020004)]
163     HRESULT ScheduledInstallationDay( [in] AutomaticUpdatesScheduledInstallationDay value );
164
165     [propget, id(0x60020005)]
166     HRESULT ScheduledInstallationTime( [out, retval] LONG *retval );
167
168     [propput, id(0x60020005)]
169     HRESULT ScheduledInstallationTime( [in] LONG value );
170
171     [id(0x60020006)]
172     HRESULT Refresh();
173
174     [id(0x60020007)]
175     HRESULT Save();
176 }
177
178 [
179     object,
180     uuid(673425bf-c082-4c7c-bdfd-569464b8e0ce),
181     oleautomation,
182     dual,
183     nonextensible,
184     pointer_default(unique),
185     hidden
186 ]
187 interface IAutomaticUpdates : IDispatch
188 {
189     HRESULT DetectNow();
190     HRESULT Pause();
191     HRESULT Resume();
192     HRESULT ShowSettingsDialog();
193
194     [propget]
195     HRESULT Settings(
196         [out, retval] IAutomaticUpdatesSettings **retval);
197
198     [propget]
199     HRESULT ServiceEnabled(
200         [out, retval] VARIANT_BOOL *retval);
201
202     HRESULT EnableService();
203 }
204
205 [
206     object,
207     oleautomation,
208     dual,
209     nonextensible,
210     uuid(174c81fe-aecd-4dae-b8a0-2c6318dd86a8),
211     pointer_default(unique),
212 ]
213 interface IWebProxy : IDispatch
214 {
215     [propget, id(0x60020001)]
216     HRESULT Address( [out, retval] BSTR *retval );
217
218     [propput, id(0x60020001)]
219     HRESULT Address( [in] BSTR value );
220
221     [propget, id(0x60020002)]
222     HRESULT BypassList( [out, retval] IStringCollection **retval );
223
224     [propput, id(0x60020002)]
225     HRESULT BypassList( [in] IStringCollection *value );
226
227     [propget, id(0x60020003)]
228     HRESULT BypassProxyOnLocal( [out, retval] VARIANT_BOOL *retval );
229
230     [propput, id(0x60020003)]
231     HRESULT BypassProxyOnLocal( [in] VARIANT_BOOL value );
232
233     [propget, id(0x60020004)]
234     HRESULT ReadOnly( [out, retval] VARIANT_BOOL *retval );
235
236     [propget, id(0x60020005)]
237     HRESULT UserName( [out, retval] BSTR *retval );
238
239     [propput, id(0x60020005)]
240     HRESULT UserName( [in] BSTR value );
241
242     [id(0x60020006)]
243     HRESULT SetPassword( [in] BSTR value );
244
245     [id(0x60020007)]
246     HRESULT PromptForCredentials( [in, unique] IUnknown *parentWindow,
247                                   [in] BSTR title );
248
249     [restricted, id(0x60020008)]
250     HRESULT PromptForCredentialsFromHwnd( [in, unique] HWND parentWindow,
251                                           [in] BSTR title );
252
253     [propget, id(0x60020009)]
254     HRESULT AutoDetect( [out, retval] VARIANT_BOOL *retval );
255
256     [propput, id(0x60020009)]
257     HRESULT AutoDetect( [in] VARIANT_BOOL value );
258 }
259
260 [
261     object,
262     uuid(816858a4-260d-4260-933a-2585f1abc76b),
263     oleautomation,
264     dual,
265     nonextensible,
266     pointer_default(unique),
267 ]
268 interface IUpdateSession : IDispatch
269 {
270     [propget]
271     HRESULT ClientApplicationID(
272         [out, retval] BSTR *retval);
273
274     [propput]
275     HRESULT ClientApplicationID(
276         [in] BSTR value);
277
278     [propget]
279     HRESULT ReadOnly(
280         [out, retval] VARIANT_BOOL *retval);
281
282     [propget]
283     HRESULT WebProxy(
284         [out, retval] IWebProxy **retval);
285
286     [propput]
287     HRESULT WebProxy(
288         [in, unique] IWebProxy *value);
289
290     HRESULT CreateUpdateSearcher(
291         [out, retval] IUpdateSearcher **retval);
292
293     HRESULT CreateUpdateDownloader(
294         [out, retval] IUpdateDownloader **retval);
295
296     HRESULT CreateUpdateInstaller(
297         [out, retval] IUpdateInstaller **retval);
298 }
299
300 [
301     object,
302     oleautomation,
303     dual,
304     nonextensible,
305     uuid(7c907864-346c-4aeb-8f3f-57da289f969f),
306     pointer_default(unique),
307 ]
308 interface IImageInformation : IDispatch
309 {
310     [propget, id(0x60020001)]
311     HRESULT AltText( [out, retval] BSTR *retval );
312
313     [propget, id(0x60020002)]
314     HRESULT Height( [out, retval] LONG *retval );
315
316     [propget, id(0x60020003)]
317     HRESULT Source( [out, retval] BSTR *retval );
318
319     [propget, id(0x60020004)]
320     HRESULT Width( [out, retval] LONG *retval );
321 }
322
323 [
324     object,
325     oleautomation,
326     dual,
327     nonextensible,
328     uuid(81ddc1b8-9d35-47a6-b471-5b80f519223b),
329     pointer_default(unique),
330 ]
331 interface ICategory : IDispatch
332 {
333     [propget, id(DISPID_VALUE)]
334     HRESULT Name( [out, retval] BSTR *retval );
335
336     [propget, id(0x60020001)]
337     HRESULT CategoryID( [out, retval] BSTR *retval );
338
339     [propget, id(0x60020002)]
340     HRESULT Children( [out, retval] ICategoryCollection **retval );
341
342     [propget, id(0x60020003)]
343     HRESULT Description( [out, retval] BSTR *retval );
344
345     [propget, id(0x60020004)]
346     HRESULT Image( [out, retval] IImageInformation **retval );
347
348     [propget, id(0x60020005)]
349     HRESULT Order( [out, retval] LONG *retval );
350
351     [propget, id(0x60020006)]
352     HRESULT Parent( [out, retval] ICategory **retval );
353
354     [propget, id(0x60020007)]
355     HRESULT Type( [out, retval] BSTR *retval );
356
357     [propget, id(0x60020008)]
358     HRESULT Updates( [out, retval] IUpdateCollection **retval );
359 }
360
361 [
362     object,
363     oleautomation,
364     dual,
365     nonextensible,
366     uuid(3a56bfb8-576c-43f7-9335-fe4838fd7e37),
367     pointer_default(unique),
368 ]
369 interface ICategoryCollection : IDispatch
370 {
371     [propget, id(DISPID_VALUE)]
372     HRESULT Item( [in] LONG index,
373                 [out, retval] ICategory **retval );
374
375     [propget, id(DISPID_NEWENUM)]
376     HRESULT _NewEnum( [out, retval] IUnknown **retval );
377
378     [propget, id(0x60020001)]
379     HRESULT Count( [out, retval] LONG *retval );
380 }
381
382 [
383     object,
384     oleautomation,
385     dual,
386     nonextensible,
387     uuid(eff90582-2ddc-480f-a06d-60f3fbc362c3),
388     pointer_default(unique),
389     hidden
390 ]
391 interface IStringCollection : IDispatch
392 {
393     [propget, id(DISPID_VALUE)]
394     HRESULT Item( [in] LONG index,
395                   [out, retval] BSTR *retval );
396
397     [propput, id(DISPID_VALUE)]
398     HRESULT Item( [in] LONG index,
399                 [in] BSTR value );
400
401     [propget, id(DISPID_NEWENUM)]
402     HRESULT _NewEnum( [out, retval] IUnknown **retval );
403
404     [propget, id(0x60020001)]
405     HRESULT Count( [out, retval] LONG *retval );
406
407     [propget, id(0x60020002)]
408     HRESULT ReadOnly( [out, retval] VARIANT_BOOL *retval );
409
410     [id(0x60020003)]
411     HRESULT Add( [in] BSTR value,
412                  [out, retval] LONG *retval );
413
414     [id(0x60020004)]
415     HRESULT Clear();
416
417     [id(0x60020005)]
418     HRESULT Copy( [out, retval] IStringCollection **retval );
419
420     [id(0x60020006)]
421     HRESULT Insert( [in] LONG index,
422                     [in] BSTR value );
423
424     [id(0x60020007)]
425     HRESULT RemoveAt( [in] LONG index );
426 }
427
428 [
429     object,
430     oleautomation,
431     dual,
432     nonextensible,
433     uuid(a376dd5e-09d4-427f-af7c-fed5b6e1c1d6),
434     pointer_default(unique),
435 ]
436 interface IUpdateException : IDispatch
437 {
438     [propget, id(DISPID_VALUE)]
439     HRESULT Message( [out, retval] BSTR *retval );
440
441     [propget, id(0x60020001)]
442     HRESULT HResult( [out, retval] LONG *retval );
443
444     [propget, id(0x60020002)]
445     HRESULT Context( [out, retval] UpdateExceptionContext *retval );
446 }
447
448 [
449     object,
450     oleautomation,
451     dual,
452     nonextensible,
453     uuid(503626a3-8e14-4729-9355-0fe664bd2321),
454     pointer_default(unique),
455 ]
456 interface IUpdateExceptionCollection : IDispatch
457 {
458     [propget, id(DISPID_VALUE)]
459     HRESULT Item( [in] LONG index,
460                   [out, retval] IUpdateException **retval );
461
462     [propget, id(DISPID_NEWENUM)]
463     HRESULT _NewEnum( [out, retval] IUnknown **retval );
464
465     [propget, id(0x60020001)]
466     HRESULT Count( [out, retval] LONG *retval );
467 }
468
469 [
470     object,
471     oleautomation,
472     dual,
473     nonextensible,
474     uuid(46297823-9940-4c09-aed9-cd3ea6d05968),
475     pointer_default(unique)
476 ]
477 interface IUpdateIdentity : IDispatch
478 {
479     [propget, id(0x60020002)]
480     HRESULT RevisionNumber( [out, retval] LONG *retval );
481
482     [propget, id(0x60020003)]
483     HRESULT UpdateID( [out, retval] BSTR *retval );
484 }
485
486 [
487     ,
488     object,
489     oleautomation,
490     dual,
491     nonextensible,
492     uuid(d9a59339-e245-4dbd-9686-4d5763e39624),
493     pointer_default(unique),
494 ]
495 interface IInstallationBehavior : IDispatch
496 {
497     [propget, id(0x60020001)]
498     HRESULT CanRequestUserInput( [out, retval] VARIANT_BOOL *retval );
499
500     [propget, id(0x60020002)]
501     HRESULT Impact( [out, retval] InstallationImpact *retval );
502
503     [propget, id(0x60020003)]
504     HRESULT RebootBehavior( [out, retval] InstallationRebootBehavior *retval );
505
506     [propget, id(0x60020004)]
507     HRESULT RequiresNetworkConnectivity( [out, retval] VARIANT_BOOL *retval );
508 }
509
510 [
511     object,
512     oleautomation,
513     dual,
514     nonextensible,
515     uuid(54a2cb2d-9a0c-48b6-8a50-9abb69ee2d02),
516     pointer_default(unique),
517 ]
518 interface IUpdateDownloadContent : IDispatch
519 {
520     [propget, id(0x60020001)]
521     HRESULT DownloadUrl( [out, retval] BSTR *retval );
522 }
523
524 [
525     object,
526     oleautomation,
527     dual,
528     nonextensible,
529     uuid(bc5513c8-b3b8-4bf7-a4d4-361c0d8c88ba),
530     pointer_default(unique),
531 ]
532 interface IUpdateDownloadContentCollection : IDispatch
533 {
534     [propget, id(DISPID_VALUE)]
535     HRESULT Item( [in] LONG index,
536                   [out, retval] IUpdateDownloadContent **retval );
537
538     [propget, id(DISPID_NEWENUM)]
539     HRESULT _NewEnum( [out, retval] IUnknown **retval );
540
541     [propget, id(0x60020001)]
542     HRESULT Count( [out, retval] LONG *retval );
543 }
544
545 [
546
547     object,
548     oleautomation,
549     dual,
550     nonextensible,
551     uuid(6a92b07a-d821-4682-b423-5c805022cc4d),
552     pointer_default(unique),
553 ]
554 interface IUpdate : IDispatch
555 {
556     [propget, id(DISPID_VALUE)]
557     HRESULT Title( [out, retval] BSTR *retval );
558
559     [propget, id(0x60020001)]
560     HRESULT AutoSelectOnWebSites( [out, retval] VARIANT_BOOL *retval );
561
562     [propget, id(0x60020002)]
563     HRESULT BundledUpdates( [out, retval] IUpdateCollection **retval );
564
565     [propget, id(0x60020003)]
566     HRESULT CanRequireSource( [out, retval] VARIANT_BOOL *retval );
567
568     [propget, id(0x60020004)]
569     HRESULT Categories( [out, retval] ICategoryCollection **retval );
570
571     [propget, id(0x60020005)]
572     HRESULT Deadline( [out, retval] VARIANT *retval );
573
574     [propget, id(0x60020006)]
575     HRESULT DeltaCompressedContentAvailable( [out, retval] VARIANT_BOOL *retval );
576
577     [propget, id(0x60020007)]
578     HRESULT DeltaCompressedContentPreferred( [out, retval] VARIANT_BOOL *retval );
579
580     [propget, id(0x60020008)]
581     HRESULT Description( [out, retval] BSTR *retval );
582
583     [propget, id(0x60020009)]
584     HRESULT EulaAccepted( [out, retval] VARIANT_BOOL *retval );
585
586     [propget, id(0x6002000a)]
587     HRESULT EulaText( [out, retval] BSTR *retval );
588
589     [propget, id(0x6002000b)]
590     HRESULT HandlerID( [out, retval] BSTR *retval );
591
592     [propget, id(0x6002000c)]
593     HRESULT Identity( [out, retval] IUpdateIdentity **retval );
594
595     [propget, id(0x6002000d)]
596     HRESULT Image( [out, retval] IImageInformation **retval );
597
598     [propget, id(0x6002000e)]
599     HRESULT InstallationBehavior( [out, retval] IInstallationBehavior **retval );
600
601     [propget, id(0x6002000f)]
602     HRESULT IsBeta( [out, retval] VARIANT_BOOL *retval );
603
604     [propget, id(0x60020010)]
605     HRESULT IsDownloaded( [out, retval] VARIANT_BOOL *retval );
606
607     [propget, id(0x60020011)]
608     HRESULT IsHidden( [out, retval] VARIANT_BOOL *retval );
609
610     [propput, id(0x60020011)]
611     HRESULT IsHidden( [in] VARIANT_BOOL value );
612
613     [propget, id(0x60020012)]
614     HRESULT IsInstalled( [out, retval] VARIANT_BOOL *retval );
615
616     [propget, id(0x60020013)]
617     HRESULT IsMandatory( [out, retval] VARIANT_BOOL *retval );
618
619     [propget, id(0x60020014)]
620     HRESULT IsUninstallable( [out, retval] VARIANT_BOOL *retval );
621
622     [propget, id(0x60020015)]
623     HRESULT Languages( [out, retval] IStringCollection **retval );
624
625     [propget, id(0x60020016)]
626     HRESULT LastDeploymentChangeTime( [out, retval] DATE *retval );
627
628     [propget, id(0x60020017)]
629     HRESULT MaxDownloadSize( [out, retval] DECIMAL *retval );
630
631     [propget, id(0x60020018)]
632     HRESULT MinDownloadSize( [out, retval] DECIMAL *retval );
633
634     [propget, id(0x60020019)]
635     HRESULT MoreInfoUrls( [out, retval] IStringCollection **retval );
636
637     [propget, id(0x6002001a)]
638     HRESULT MsrcSeverity( [out, retval] BSTR *retval );
639
640     [propget, id(0x6002001b)]
641     HRESULT RecommendedCpuSpeed( [out, retval] LONG *retval );
642
643     [propget, id(0x6002001c)]
644     HRESULT RecommendedHardDiskSpace( [out, retval] LONG *retval );
645
646     [propget, id(0x6002001d)]
647     HRESULT RecommendedMemory( [out, retval] LONG *retval );
648
649     [propget, id(0x6002001e)]
650     HRESULT ReleaseNotes( [out, retval] BSTR *retval );
651
652     [propget, id(0x6002001f)]
653     HRESULT SecurityBulletinIDs( [out, retval] IStringCollection **retval );
654
655     [propget, id(0x60020021)]
656     HRESULT SupersededUpdateIDs( [out, retval] IStringCollection **retval );
657
658     [propget, id(0x60020022)]
659     HRESULT SupportUrl( [out, retval] BSTR *retval );
660
661     [propget, id(0x60020023)]
662     HRESULT Type( [out, retval] UpdateType *retval );
663
664     [propget, id(0x60020024)]
665     HRESULT UninstallationNotes( [out, retval] BSTR *retval );
666
667     [propget, id(0x60020025)]
668     HRESULT UninstallationBehavior( [out, retval] IInstallationBehavior **retval );
669
670     [propget, id(0x60020026)]
671     HRESULT UninstallationSteps( [out, retval] IStringCollection **retval );
672
673     [propget, id(0x60020028)]
674     HRESULT KBArticleIDs( [out, retval] IStringCollection **retval );
675
676     [id(0x60020027)]
677     HRESULT AcceptEula();
678
679     [propget, id(0x60020029)]
680     HRESULT DeploymentAction( [out, retval] DeploymentAction *retval );
681
682     [id(0x6002002a)]
683     HRESULT CopyFromCache( [in, ref] BSTR path,
684                            [in] VARIANT_BOOL toExtractCabFiles );
685
686     [propget, id(0x6002002b)]
687     HRESULT DownloadPriority( [out, retval] DownloadPriority *retval );
688
689     [propget, id(0x6002002c)]
690     HRESULT DownloadContents( [out, retval] IUpdateDownloadContentCollection **retval );
691 }
692
693 [
694
695     object,
696     oleautomation,
697     dual,
698     nonextensible,
699     uuid(07f7438c-7709-4ca5-b518-91279288134e),
700     pointer_default(unique),
701     hidden
702 ]
703 interface IUpdateCollection : IDispatch
704 {
705     [propget, id(DISPID_VALUE)]
706     HRESULT Item( [in] LONG index,
707                   [out, retval] IUpdate **retval );
708
709     [propput, id(DISPID_VALUE)]
710     HRESULT Item( [in] LONG index,
711                   [in] IUpdate *value );
712
713     [propget, id(DISPID_NEWENUM)]
714     HRESULT _NewEnum( [out, retval] IUnknown **retval );
715
716     [propget, id(0x60020001)]
717     HRESULT Count( [out, retval] LONG *retval );
718
719     [propget, id(0x60020002)]
720     HRESULT ReadOnly( [out, retval] VARIANT_BOOL *retval );
721
722     [id(0x60020003)]
723     HRESULT Add( [in] IUpdate *value,
724                  [out, retval] LONG *retval );
725
726     [id(0x60020004)]
727     HRESULT Clear();
728
729     [id(0x60020005)]
730     HRESULT Copy( [out, retval] IUpdateCollection **retval );
731
732     [id(0x60020006)]
733     HRESULT Insert( [in] LONG index,
734                 [in] IUpdate *value );
735
736     [id(0x60020007)]
737     HRESULT RemoveAt( [in] LONG index );
738 }
739
740 [
741     object,
742     oleautomation,
743     dual,
744     nonextensible,
745     uuid(7366ea16-7a1a-4ea2-b042-973d3e9cd99b),
746     pointer_default(unique),
747 ]
748 interface ISearchJob : IDispatch
749 {
750     [propget, id(0x60020001)]
751     HRESULT AsyncState( [out, retval] VARIANT *retval );
752
753     [propget, id(0x60020002)]
754     HRESULT IsCompleted( [out, retval] VARIANT_BOOL *retval );
755
756     [id(0x60020003)]
757     HRESULT CleanUp();
758
759     [id(0x60020004)]
760     HRESULT RequestAbort();
761 }
762
763 [
764     object,
765     oleautomation,
766     dual,
767     nonextensible,
768     uuid(d40cff62-e08c-4498-941a-01e25f0fd33c),
769     pointer_default(unique),
770 ]
771 interface ISearchResult : IDispatch
772 {
773     [propget, id(0x60020001)]
774     HRESULT ResultCode( [out, retval] OperationResultCode *retval );
775
776     [propget, id(0x60020002)]
777     HRESULT RootCategories( [out, retval] ICategoryCollection **retval );
778
779     [propget, id(0x60020003)]
780     HRESULT Updates( [out, retval] IUpdateCollection **retval );
781
782     [propget, id(0x60020004)]
783     HRESULT Warnings( [out, retval] IUpdateExceptionCollection **retval );
784 }
785
786 [
787     object,
788     oleautomation,
789     dual,
790     nonextensible,
791     uuid(be56a644-af0e-4e0e-a311-c1d8e695cbff),
792     pointer_default(unique),
793 ]
794 interface IUpdateHistoryEntry : IDispatch
795 {
796     [propget, id(0x60020001)]
797     HRESULT Operation( [out, retval] UpdateOperation *retval );
798
799     [propget, id(0x60020002)]
800     HRESULT ResultCode( [out, retval] OperationResultCode *retval );
801
802     [propget, id(0x60020003)]
803     HRESULT HResult( [out, retval] LONG *retval );
804
805     [propget, id(0x60020004)]
806     HRESULT Date( [out, retval] DATE *retval );
807
808     [propget, id(0x60020005)]
809     HRESULT UpdateIdentity( [out, retval] IUpdateIdentity **retval );
810
811     [propget, id(0x60020006)]
812     HRESULT Title( [out, retval] BSTR *retval );
813
814     [propget, id(0x60020007)]
815     HRESULT Description( [out, retval] BSTR *retval );
816
817     [propget, id(0x60020008)]
818     HRESULT UnmappedResultCode( [out, retval] LONG *retval );
819
820     [propget, id(0x60020009)]
821     HRESULT ClientApplicationID( [out, retval] BSTR *retval );
822
823     [propget, id(0x6002000a)]
824     HRESULT ServerSelection( [out, retval] ServerSelection *retval );
825
826     [propget, id(0x6002000b)]
827     HRESULT ServiceID( [out, retval] BSTR *retval );
828
829     [propget, id(0x6002000c)]
830     HRESULT UninstallationSteps( [out, retval] IStringCollection **retval );
831
832     [propget, id(0x6002000d)]
833     HRESULT UninstallationNotes( [out, retval] BSTR *retval );
834
835     [propget, id(0x6002000e)]
836     HRESULT SupportUrl( [out, retval] BSTR *retval );
837 }
838
839 [
840     object,
841     oleautomation,
842     dual,
843     nonextensible,
844     uuid(a7f04f3c-a290-435b-aadf-a116c3357a5c),
845     pointer_default(unique),
846 ]
847 interface IUpdateHistoryEntryCollection : IDispatch
848 {
849     [propget, id(DISPID_VALUE)]
850     HRESULT Item( [in] LONG index,
851                   [out, retval] IUpdateHistoryEntry **retval );
852
853     [propget, id(DISPID_NEWENUM)]
854     HRESULT _NewEnum( [out, retval] IUnknown **retval );
855
856     [propget, id(0x60020001)]
857     HRESULT Count( [out, retval] LONG *retval );
858 }
859
860 [
861     object,
862     uuid(8f45abf1-f9ae-4b95-a933-f0f66e5056ea),
863     oleautomation,
864     dual,
865     nonextensible,
866     pointer_default(unique),
867 ]
868 interface IUpdateSearcher : IDispatch
869 {
870     [propget]
871     HRESULT CanAutomaticallyUpgradeService(
872         [out, retval] VARIANT_BOOL *retval);
873
874     [propput]
875     HRESULT CanAutomaticallyUpgradeService(
876         [in] VARIANT_BOOL value);
877
878     [propget]
879     HRESULT ClientApplicationID(
880         [out, retval] BSTR *retval);
881
882     [propput]
883     HRESULT ClientApplicationID(
884         [in] BSTR value);
885
886     [propget]
887     HRESULT IncludePotentiallySupersededUpdates(
888         [out, retval] VARIANT_BOOL *retval);
889
890     [propput]
891     HRESULT IncludePotentiallySupersededUpdates(
892         [in] VARIANT_BOOL value);
893
894     [propget]
895     HRESULT ServerSelection(
896         [out, retval] ServerSelection *retval);
897
898     [propput]
899     HRESULT ServerSelection(
900         [in] ServerSelection value);
901
902     HRESULT BeginSearch(
903         [in] BSTR criteria,
904         [in] IUnknown *onCompleted,
905         [in] VARIANT state,
906         [out, retval] ISearchJob **retval);
907
908     HRESULT EndSearch(
909         [in] ISearchJob *searchJob,
910         [out, retval] ISearchResult **retval);
911
912     HRESULT EscapeString(
913         [in] BSTR unescaped,
914         [out, retval] BSTR *retval);
915
916     HRESULT QueryHistory(
917         [in] LONG startIndex,
918         [in] LONG count,
919         [out, retval] IUpdateHistoryEntryCollection **retval);
920
921     HRESULT Search(
922         [in] BSTR criteria,
923         [out, retval] ISearchResult **retval);
924
925     [propget]
926     HRESULT Online(
927         [out, retval] VARIANT_BOOL *retval);
928
929     [propput]
930     HRESULT Online(
931         [in] VARIANT_BOOL value);
932
933     HRESULT GetTotalHistoryCount(
934         [out, retval] LONG *retval);
935
936     [propget]
937     HRESULT ServiceID(
938         [out, retval] BSTR *retval);
939
940     [propput]
941     HRESULT ServiceID(
942         [in] BSTR value);
943 }
944
945 [
946     object,
947     oleautomation,
948     dual,
949     nonextensible,
950     uuid(bf99af76-b575-42ad-8aa4-33cbb5477af1),
951     pointer_default(unique),
952 ]
953 interface IUpdateDownloadResult : IDispatch
954 {
955     [propget, id(0x60020001)]
956     HRESULT HResult( [out, retval] LONG *retval );
957
958     [propget, id(0x60020002)]
959     HRESULT ResultCode( [out, retval] OperationResultCode *retval );
960 }
961
962 [
963     object,
964     oleautomation,
965     dual,
966     nonextensible,
967     uuid(d31a5bac-f719-4178-9dbb-5e2cb47fd18a),
968     pointer_default(unique),
969 ]
970 interface IDownloadProgress : IDispatch
971 {
972     [propget, id(0x60020001)]
973     HRESULT CurrentUpdateBytesDownloaded( [out, retval] DECIMAL *retval );
974
975     [propget, id(0x60020002)]
976     HRESULT CurrentUpdateBytesToDownload( [out, retval] DECIMAL *retval );
977
978     [propget, id(0x60020003)]
979     HRESULT CurrentUpdateIndex( [out, retval] LONG *retval );
980
981     [propget, id(0x60020004)]
982     HRESULT PercentComplete( [out, retval] LONG *retval );
983
984     [propget, id(0x60020005)]
985     HRESULT TotalBytesDownloaded( [out, retval] DECIMAL *retval );
986
987     [propget, id(0x60020006)]
988     HRESULT TotalBytesToDownload( [out, retval] DECIMAL *retval );
989
990     [id(0x60020007)]
991     HRESULT GetUpdateResult( [in] LONG updateIndex,
992                              [out, retval] IUpdateDownloadResult **retval );
993
994
995     [propget, id(0x60020008)]
996     HRESULT CurrentUpdateDownloadPhase( [out, retval] DownloadPhase *retval );
997
998     [propget, id(0x60020009)]
999     HRESULT CurrentUpdatePercentComplete( [out, retval] LONG *retval );
1000 }
1001
1002 [
1003     object,
1004     oleautomation,
1005     dual,
1006     nonextensible,
1007     uuid(c574de85-7358-43f6-aae8-8697e62d8ba7),
1008     pointer_default(unique),
1009 ]
1010 interface IDownloadJob : IDispatch
1011 {
1012     [propget, id(0x60020001)]
1013     HRESULT AsyncState( [out, retval] VARIANT *retval );
1014
1015     [propget, id(0x60020002)]
1016     HRESULT IsCompleted( [out, retval] VARIANT_BOOL *retval );
1017
1018     [propget, id(0x60020003)]
1019     HRESULT Updates( [out, retval] IUpdateCollection **retval );
1020
1021     [id(0x60020004)]
1022     HRESULT CleanUp();
1023
1024     [id(0x60020005)]
1025     HRESULT GetProgress( [out, retval] IDownloadProgress **retval );
1026
1027     [id(0x60020006)]
1028     HRESULT RequestAbort();
1029 }
1030
1031 [
1032     object,
1033     oleautomation,
1034     dual,
1035     nonextensible,
1036     uuid(daa4fdd0-4727-4dbe-a1e7-745dca317144),
1037     pointer_default(unique),
1038 ]
1039 interface IDownloadResult : IDispatch
1040 {
1041     [propget, id(0x60020001)]
1042     HRESULT HResult( [out, retval] LONG *retval );
1043
1044     [propget, id(0x60020002)]
1045     HRESULT ResultCode( [out, retval] OperationResultCode *retval );
1046
1047     [id(0x60020003)]
1048     HRESULT GetUpdateResult( [in] LONG updateIndex,
1049                              [out, retval] IUpdateDownloadResult **retval );
1050 }
1051
1052 [
1053     object,
1054     uuid(68f1c6f9-7ecc-4666-a464-247fe12496c3),
1055     oleautomation,
1056     dual,
1057     nonextensible,
1058     pointer_default(unique),
1059     hidden
1060 ]
1061 interface IUpdateDownloader : IDispatch
1062 {
1063     [propget]
1064     HRESULT ClientApplicationID(
1065         [out, retval] BSTR *retval);
1066
1067     [propput]
1068     HRESULT ClientApplicationID(
1069         [in] BSTR value);
1070
1071     [propget]
1072     HRESULT IsForced(
1073         [out, retval] VARIANT_BOOL *retval);
1074
1075     [propput]
1076     HRESULT IsForced(
1077         [in] VARIANT_BOOL value);
1078
1079     [propget]
1080     HRESULT Priority(
1081         [out, retval] DownloadPriority *retval);
1082
1083     [propput]
1084     HRESULT Priority(
1085         [in] DownloadPriority value);
1086
1087     [propget]
1088     HRESULT Updates(
1089         [out, retval] IUpdateCollection **retval);
1090
1091     [propput]
1092     HRESULT Updates(
1093         [in] IUpdateCollection *value);
1094
1095     HRESULT BeginDownload(
1096         [in] IUnknown *onProgressChanged,
1097         [in] IUnknown *onCompleted,
1098         [in] VARIANT state,
1099         [out, retval] IDownloadJob **retval);
1100
1101     HRESULT Download(
1102         [out, retval] IDownloadResult **retval);
1103
1104     HRESULT EndDownload(
1105         [in] IDownloadJob *value,
1106         [out, retval] IDownloadResult **retval);
1107 }
1108
1109 [
1110     object,
1111     oleautomation,
1112     dual,
1113     nonextensible,
1114     uuid(d940f0f8-3cbb-4fd0-993f-471e7f2328ad),
1115     pointer_default(unique),
1116 ]
1117 interface IUpdateInstallationResult : IDispatch
1118 {
1119     [propget, id(0x60020001)]
1120     HRESULT HResult( [out, retval] LONG *retval );
1121
1122     [propget, id(0x60020002)]
1123     HRESULT RebootRequired( [out, retval] VARIANT_BOOL *retval );
1124
1125     [propget, id(0x60020003)]
1126     HRESULT ResultCode( [out, retval] OperationResultCode *retval );
1127 }
1128
1129 [
1130     object,
1131     oleautomation,
1132     dual,
1133     nonextensible,
1134     uuid(345c8244-43a3-4e32-a368-65f073b76f36),
1135     pointer_default(unique),
1136 ]
1137 interface IInstallationProgress : IDispatch
1138 {
1139     [propget, id(0x60020001)]
1140     HRESULT CurrentUpdateIndex( [out, retval] LONG *retval );
1141
1142     [propget, id(0x60020002)]
1143     HRESULT CurrentUpdatePercentComplete( [out, retval] LONG *retval );
1144
1145     [propget, id(0x60020003)]
1146     HRESULT PercentComplete( [out, retval] LONG *retval );
1147
1148     [id(0x60020004)]
1149     HRESULT GetUpdateResult( [in] LONG updateIndex,
1150                              [out, retval] IUpdateInstallationResult **retval );
1151 }
1152
1153 [
1154     object,
1155     oleautomation,
1156     dual,
1157     nonextensible,
1158     uuid(5c209f0b-bad5-432a-9556-4699bed2638a),
1159     pointer_default(unique),
1160 ]
1161 interface IInstallationJob : IDispatch
1162 {
1163     [propget, id(0x60020001)]
1164     HRESULT AsyncState( [out, retval] VARIANT *retval );
1165
1166     [propget, id(0x60020002)]
1167     HRESULT IsCompleted( [out, retval] VARIANT_BOOL *retval );
1168
1169     [propget, id(0x60020003)]
1170     HRESULT Updates( [out, retval] IUpdateCollection **retval );
1171
1172     [id(0x60020004)]
1173     HRESULT CleanUp();
1174
1175     [id(0x60020005)]
1176     HRESULT GetProgress( [out, retval] IInstallationProgress **retval );
1177
1178     [id(0x60020006)]
1179     HRESULT RequestAbort();
1180 }
1181
1182 [
1183     object,
1184     oleautomation,
1185     dual,
1186     nonextensible,
1187     uuid(a43c56d6-7451-48d4-af96-b6cd2d0d9b7a),
1188     pointer_default(unique),
1189 ]
1190 interface IInstallationResult : IDispatch
1191 {
1192     [propget, id(0x60020001)]
1193     HRESULT HResult( [out, retval] LONG *retval );
1194
1195     [propget, id(0x60020002)]
1196     HRESULT RebootRequired( [out, retval] VARIANT_BOOL *retval );
1197
1198     [propget, id(0x60020003)]
1199     HRESULT ResultCode( [out, retval] OperationResultCode *retval );
1200
1201     [id(0x60020004)]
1202     HRESULT GetUpdateResult( [in] LONG updateIndex,
1203                              [out, retval] IUpdateInstallationResult **retval );
1204 }
1205
1206 [
1207     object,
1208     uuid(7b929c68-ccdc-4226-96b1-8724600b54c2),
1209     oleautomation,
1210     dual,
1211     nonextensible,
1212     pointer_default(unique),
1213 ]
1214 interface IUpdateInstaller : IDispatch
1215 {
1216     [propget]
1217     HRESULT ClientApplicationID(
1218         [out, retval] BSTR *retval);
1219
1220     [propput]
1221     HRESULT ClientApplicationID(
1222         [in] BSTR value);
1223
1224     [propget]
1225     HRESULT IsForced(
1226         [out, retval] VARIANT_BOOL *retval);
1227
1228     [propput]
1229     HRESULT IsForced(
1230         [in] VARIANT_BOOL value);
1231
1232     [propget, restricted]
1233     HRESULT ParentHwnd(
1234         [out, retval] HWND *retval);
1235
1236     [propput, restricted]
1237     HRESULT ParentHwnd(
1238         [in, unique] HWND value);
1239
1240     [propput]
1241     HRESULT ParentWindow(
1242         [in, unique] IUnknown *value);
1243
1244     [propget]
1245     HRESULT ParentWindow(
1246         [out, retval] IUnknown **retval);
1247
1248     [propget]
1249     HRESULT Updates(
1250         [out, retval] IUpdateCollection **retval);
1251
1252     [propput]
1253     HRESULT Updates(
1254         [in] IUpdateCollection *value);
1255
1256     HRESULT BeginInstall(
1257         [in] IUnknown *onProgressChanged,
1258         [in] IUnknown *onCompleted,
1259         [in] VARIANT state,
1260         [out, retval] IInstallationJob **retval);
1261
1262     HRESULT BeginUninstall(
1263         [in] IUnknown *onProgressChanged,
1264         [in] IUnknown *onCompleted,
1265         [in] VARIANT state,
1266         [out, retval] IInstallationJob **retval);
1267
1268     HRESULT EndInstall(
1269         [in] IInstallationJob *value,
1270         [out, retval] IInstallationResult **retval);
1271
1272     HRESULT EndUninstall(
1273         [in] IInstallationJob *value,
1274         [out, retval] IInstallationResult **retval);
1275
1276     HRESULT Install(
1277         [out, retval] IInstallationResult **retval);
1278
1279     HRESULT RunWizard(
1280         [in, defaultvalue("")] BSTR dialogTitle,
1281         [out, retval] IInstallationResult **retval);
1282
1283     [propget]
1284     HRESULT IsBusy(
1285         [out, retval] VARIANT_BOOL *retval);
1286
1287     HRESULT Uninstall(
1288         [out, retval] IInstallationResult **retval);
1289
1290     [propget]
1291     HRESULT AllowSourcePrompts(
1292         [out, retval] VARIANT_BOOL *retval);
1293
1294     [propput]
1295     HRESULT AllowSourcePrompts(
1296         [in] VARIANT_BOOL value);
1297
1298     [propget]
1299     HRESULT RebootRequiredBeforeInstallation(
1300         [out, retval] VARIANT_BOOL *retval);
1301 }
1302
1303 [
1304     helpstring("AutomaticUpdates Class"),
1305     threading(both),
1306     progid("Microsoft.Update.AutoUpdate.1"),
1307     vi_progid("Microsoft.Update.AutoUpdate"),
1308     uuid(bfe18e9c-6d87-4450-b37c-e02f0b373803)
1309 ]
1310 coclass AutomaticUpdates { interface IAutomaticUpdates; }
1311
1312 [
1313     helpstring("UpdateSession Class"),
1314     threading(both),
1315     progid("Microsoft.Update.Session.1"),
1316     vi_progid("Microsoft.Update.Session"),
1317     uuid(4cb43d7f-7eee-4906-8698-60da1c38f2fe)
1318 ]
1319 coclass UpdateSession { interface IUpdateSession; }
1320
1321 } /* WUApiLib */