google_update_idl.idl 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336
  1. // Copyright 2009-2010 Google Inc.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // ========================================================================
  15. import "oaidl.idl";
  16. import "ocidl.idl";
  17. // When adding interfaces to this file:
  18. // * Do not use "Google" or "GoogleUpdate" directly. Instead, use preprocessor
  19. // defines.
  20. // * Add a test for the Google-specific value to
  21. // omaha_customization_goopdate_apis_unittest.cc.
  22. //
  23. // Enums.
  24. // These values can be passed to interface methods and/or compared to their
  25. // output.
  26. //
  27. // Must be kept in sync with the enum in base/browser_utils.h.
  28. typedef enum BrowserType {
  29. BROWSER_UNKNOWN = 0,
  30. BROWSER_DEFAULT = 1,
  31. BROWSER_INTERNET_EXPLORER = 2,
  32. BROWSER_FIREFOX = 3,
  33. BROWSER_CHROME = 4,
  34. } BrowserType;
  35. // The normal install flow proceeds from STATE_INIT through
  36. // STATE_INSTALL_COMPLETE in order, skipping states that are not relevant.
  37. // All exceptions and terminal states are start with STATE_INSTALL_COMPLETE.
  38. typedef enum CurrentState {
  39. STATE_INIT = 1,
  40. STATE_WAITING_TO_CHECK_FOR_UPDATE = 2,
  41. STATE_CHECKING_FOR_UPDATE = 3,
  42. STATE_UPDATE_AVAILABLE = 4,
  43. STATE_WAITING_TO_DOWNLOAD = 5,
  44. STATE_RETRYING_DOWNLOAD = 6,
  45. STATE_DOWNLOADING = 7,
  46. STATE_DOWNLOAD_COMPLETE = 8,
  47. STATE_EXTRACTING = 9,
  48. STATE_APPLYING_DIFFERENTIAL_PATCH = 10,
  49. // TODO(omaha3): Should we move STATE_DOWNLOAD_COMPLETE here and eliminate
  50. // STATE_READY_TO_INSTALL?
  51. STATE_READY_TO_INSTALL = 11,
  52. STATE_WAITING_TO_INSTALL = 12,
  53. STATE_INSTALLING = 13,
  54. STATE_INSTALL_COMPLETE = 14,
  55. STATE_PAUSED = 15,
  56. STATE_NO_UPDATE = 16,
  57. STATE_ERROR = 17,
  58. } CurrentState;
  59. typedef enum InstallPriority {
  60. INSTALL_PRIORITY_LOW = 0,
  61. INSTALL_PRIORITY_HIGH = 10,
  62. } InstallPriority;
  63. // Specifies what the client should do after installation.
  64. typedef enum PostInstallAction {
  65. POST_INSTALL_ACTION_DEFAULT = 0,
  66. // Caller should exit silently.
  67. POST_INSTALL_ACTION_EXIT_SILENTLY = 1,
  68. // Caller should launch the command.
  69. POST_INSTALL_ACTION_LAUNCH_COMMAND = 2,
  70. // Caller should launch the command and exit silently.
  71. POST_INSTALL_ACTION_EXIT_SILENTLY_ON_LAUNCH_COMMAND = 3,
  72. // The caller should ask the user to restart the browser. If the value of
  73. // IApp's browser is supported and postInstallUrl is valid, the client should
  74. // offer to restart the browser. If the user chooses to do so, the client
  75. // should launch the ICurrentState::postInstallUrl after shutting down and
  76. // restarting the browser.
  77. POST_INSTALL_ACTION_RESTART_BROWSER = 4,
  78. // Similar to POST_INSTALL_ACTION_RESTART_BROWSER, but ask the user to shut
  79. // down all browsers.
  80. POST_INSTALL_ACTION_RESTART_ALL_BROWSERS = 5,
  81. // The caller should ask the user to reboot the machine.
  82. POST_INSTALL_ACTION_REBOOT = 6,
  83. } PostInstallAction;
  84. enum AppCommandStatus {
  85. // The command has never been executed.
  86. COMMAND_STATUS_INIT = 1,
  87. // The command is running.
  88. COMMAND_STATUS_RUNNING = 2,
  89. // An error occurred while launching or monitoring the command.
  90. COMMAND_STATUS_ERROR = 3,
  91. // The command has completed execution.
  92. COMMAND_STATUS_COMPLETE = 4,
  93. };
  94. [
  95. object,
  96. dual,
  97. uuid(6DB17455-4E85-46e7-9D23-E555E4B005AF),
  98. helpstring("IGoogleUpdate3 Interface"),
  99. pointer_default(unique)
  100. ]
  101. interface IGoogleUpdate3 : IDispatch {
  102. // TODO(Omaha): Perhaps this interface exposes helpers such as
  103. // RestartBrowsers, etc.
  104. // Returns the count of the AppBundles in this IGoogleUpdate3 interface.
  105. [id(1), propget] HRESULT Count([out, retval] long* count);
  106. // Returns an IDispatch of the AppBundle in this IGoogleUpdate3 interface at
  107. // the specified 0-based index. This property has the dispid of DISPID_VALUE
  108. // to make it the default property of IGoogleUpdate3.
  109. [id(DISPID_VALUE), propget] HRESULT Item([in] long index,
  110. [out, retval] IDispatch** bundle);
  111. // Returns an IDispatch to a newly created empty AppBundle.
  112. [id(2)] HRESULT createAppBundle([out, retval] IDispatch** app_bundle);
  113. }
  114. [
  115. object,
  116. dual,
  117. uuid(fe908cdd-22bb-472a-9870-1a0390e42f36),
  118. helpstring("IAppBundle Interface"),
  119. pointer_default(unique)
  120. ]
  121. interface IAppBundle : IDispatch {
  122. // TODO(omaha3): AppBundle::display_name_ is never used. Should we remove?
  123. [propget] HRESULT displayName([out, retval] BSTR*);
  124. [propput] HRESULT displayName([in] BSTR);
  125. [propget] HRESULT displayLanguage([out, retval] BSTR*);
  126. [propput] HRESULT displayLanguage([in] BSTR);
  127. [propget] HRESULT installSource([out, retval] BSTR*);
  128. [propput] HRESULT installSource([in] BSTR);
  129. [propget] HRESULT originURL([out, retval] BSTR*);
  130. [propput] HRESULT originURL([in] BSTR);
  131. [propget] HRESULT offlineDirectory([out, retval] BSTR* offline_dir);
  132. [propput] HRESULT offlineDirectory([in] BSTR offline_dir);
  133. [propget] HRESULT sessionId([out, retval] BSTR* session_id);
  134. [propput] HRESULT sessionId([in] BSTR session_id);
  135. // Controls whether or not event pings should be sent at the end of
  136. // an operation.
  137. [propget] HRESULT sendPings([out, retval] VARIANT_BOOL* send_pings);
  138. [propput] HRESULT sendPings([in] VARIANT_BOOL send_pings);
  139. // The priority property determines download speed/priority and the number/
  140. // frequency of retries. Use values from the InstallPriority enum.
  141. [propget] HRESULT priority([out, retval] long* priority);
  142. [propput] HRESULT priority([in] long priority);
  143. // Returns the count of the Apps in the AppBundle.
  144. [id(1), propget] HRESULT Count([out, retval] long* count);
  145. // Returns an IDispatch of the App in the AppBundle at the specified 0-based
  146. // index. This property has the dispid of DISPID_VALUE to make it the default
  147. // property of IAppBundle.
  148. [id(DISPID_VALUE), propget] HRESULT Item([in] long index,
  149. [out, retval] IDispatch** app);
  150. // Impersonation and primary tokens set by the client. Typically only
  151. // set by the gupdatem service. The gupdatem service exposes a narrow
  152. // interface to medium integrity clients. When a medium integrity client calls
  153. // into the gupdatem service, the gupdatem service captures the token of the
  154. // caller, and then calls put_altTokens() on the gupdate service, so that the
  155. // gupdate service can use it for future download() and install() requests.
  156. [propput] HRESULT altTokens([in] ULONG_PTR impersonation_token,
  157. [in] ULONG_PTR primary_token,
  158. [in] DWORD caller_proc_id);
  159. // Sets a HWND to associate with the client, if any. This will be used as
  160. // the parent window for any dialogs that the server may need to display.
  161. [propput] HRESULT parentHWND([in] ULONG_PTR hwnd);
  162. // Initializes the bundle with the properties that have been set.
  163. [id(2)] HRESULT initialize();
  164. // Returns an IDispatch to a new App for the specified app id.
  165. // The App is added to the Bundle.
  166. [id(3)] HRESULT createApp([in] BSTR app_id,
  167. [out, retval] IDispatch** app);
  168. // Returns an IDispatch to a newly created App for the specified app ID. The
  169. // App is populated with information from the existing installation and added
  170. // to the Bundle. Fails if the specified app is not installed.
  171. [id(4)] HRESULT createInstalledApp([in] BSTR app_id,
  172. [out, retval] IDispatch** app);
  173. // Creates App instances for all installed apps managed by this Omaha
  174. // instance. Each App is populated with information from the existing install.
  175. [id(5)] HRESULT createAllInstalledApps();
  176. // These methods are non-blocking. The operation is scheduled.
  177. [id(6)] HRESULT checkForUpdate();
  178. [id(7)] HRESULT download();
  179. [id(8)] HRESULT install();
  180. // All-in-one function for automatically updating all apps. Populates the
  181. // bundle then schedules the update, which includes the update check and
  182. // download and install, if necessary.
  183. [id(9)] HRESULT updateAllApps();
  184. // These three methods are non-blocking. The operation is requested.
  185. [id(10)] HRESULT stop();
  186. [id(11)] HRESULT pause();
  187. [id(12)] HRESULT resume();
  188. // Returns true if the bundle has an uncompleted non-blocking request.
  189. [id(13)] HRESULT isBusy([out, retval] VARIANT_BOOL* is_busy);
  190. // Downloads a package of an installed application.
  191. [id(14)] HRESULT downloadPackage([in] BSTR app_id, [in] BSTR package_name);
  192. // TODO(omaha): Define this aggregated bundle state. Is this really a property
  193. // or should it be getCurrentState?
  194. // The server and bundle are the only thing that can provide aggregated
  195. // time estimates for downloads. Also, aggregate percentage is not currently
  196. // available to the client because the total bytes to download is not
  197. // available from App in all post-update check states.
  198. // To do this, we will probably need to know the total expected download
  199. // size for all packages to be installed - those that are required or in use -
  200. // by the time the update check phase is complete.
  201. [id(15), propget] HRESULT currentState([out, retval] VARIANT* current_state);
  202. };
  203. [
  204. object,
  205. dual,
  206. uuid(76F7B787-A67C-4c73-82C7-31F5E3AABC5C),
  207. helpstring("IApp Interface"),
  208. pointer_default(unique)
  209. ]
  210. interface IApp : IDispatch {
  211. // Returns a version IDispatch object.
  212. [id(1), propget] HRESULT currentVersion([out, retval] IDispatch** current);
  213. [id(2), propget] HRESULT nextVersion([out, retval] IDispatch** next);
  214. [propget] HRESULT appId([out, retval] BSTR*);
  215. [propget] HRESULT displayName([out, retval] BSTR*);
  216. [propput] HRESULT displayName([in] BSTR);
  217. [propget] HRESULT language([out, retval] BSTR*);
  218. [propput] HRESULT language([in] BSTR);
  219. [propget] HRESULT ap([out, retval] BSTR*);
  220. [propput] HRESULT ap([in] BSTR);
  221. [propget] HRESULT ttToken([out, retval] BSTR*);
  222. [propput] HRESULT ttToken([in] BSTR);
  223. [propget] HRESULT iid([out, retval] BSTR*);
  224. [propput] HRESULT iid([in] BSTR);
  225. [propget] HRESULT brandCode([out, retval] BSTR*);
  226. [propput] HRESULT brandCode([in] BSTR);
  227. [propget] HRESULT clientId([out, retval] BSTR*);
  228. [propput] HRESULT clientId([in] BSTR);
  229. [propget] HRESULT labels([out, retval] BSTR*);
  230. [propput] HRESULT labels([in] BSTR);
  231. [propget] HRESULT referralId([out, retval] BSTR*);
  232. [propput] HRESULT referralId([in] BSTR);
  233. // Returns an IDispatch to a command defined by this installed app with the
  234. // specified ID, or NULL if this app is not installed or the command ID is not
  235. // recognized.
  236. [propget] HRESULT command([in] BSTR command_id,
  237. [out, retval] IDispatch** command);
  238. // Use values from the BrowserType enum.
  239. [propget] HRESULT browserType([out, retval] UINT*);
  240. [propput] HRESULT browserType([in] UINT);
  241. [propget] HRESULT clientInstallData([out, retval] BSTR*);
  242. [propput] HRESULT clientInstallData([in] BSTR);
  243. [propget] HRESULT serverInstallDataIndex([out, retval] BSTR*);
  244. [propput] HRESULT serverInstallDataIndex([in] BSTR);
  245. // Set as soon as possible. Error pings are disabled until set to true.
  246. [propget] HRESULT isEulaAccepted([out, retval] VARIANT_BOOL*);
  247. [propput] HRESULT isEulaAccepted([in] VARIANT_BOOL);
  248. [propget] HRESULT usageStatsEnable([out, retval] UINT*);
  249. [propput] HRESULT usageStatsEnable([in] UINT);
  250. [propget] HRESULT installTimeDiffSec([out, retval] UINT*);
  251. // Returns an ICurrentState interface. The object underlying the interface has
  252. // static data that does not get updated as the server state changes. To get
  253. // the most "current" state, the currentState property needs to be queried
  254. // again.
  255. [propget] HRESULT currentState([out, retval] IDispatch**);
  256. };
  257. [
  258. object,
  259. dual,
  260. uuid(084D78A8-B084-4E14-A629-A2C419B0E3D9),
  261. helpstring("IApp2 Interface"),
  262. pointer_default(unique)
  263. ]
  264. interface IApp2 : IApp {
  265. [propget] HRESULT untrustedData([out, retval] BSTR*);
  266. [propput] HRESULT untrustedData([in] BSTR);
  267. };
  268. [
  269. object,
  270. dual,
  271. uuid(4DE778FE-F195-4ee3-9DAB-FE446C239221),
  272. helpstring("IAppCommand Interface"),
  273. pointer_default(unique)
  274. ]
  275. interface IAppCommand : IDispatch {
  276. [propget] HRESULT isWebAccessible([out, retval] VARIANT_BOOL*);
  277. // Use values from the AppCommandStatus enum.
  278. [propget] HRESULT status([out, retval] UINT*);
  279. [propget] HRESULT exitCode([out, retval] DWORD*);
  280. HRESULT execute([in, optional] VARIANT arg1,
  281. [in, optional] VARIANT arg2,
  282. [in, optional] VARIANT arg3,
  283. [in, optional] VARIANT arg4,
  284. [in, optional] VARIANT arg5,
  285. [in, optional] VARIANT arg6,
  286. [in, optional] VARIANT arg7,
  287. [in, optional] VARIANT arg8,
  288. [in, optional] VARIANT arg9);
  289. };
  290. [
  291. object,
  292. dual,
  293. uuid(3D05F64F-71E3-48A5-BF6B-83315BC8AE1F),
  294. helpstring("IAppCommand2 Interface"),
  295. pointer_default(unique)
  296. ]
  297. interface IAppCommand2 : IAppCommand {
  298. [propget] HRESULT output([out, retval] BSTR*);
  299. };
  300. [
  301. object,
  302. dual,
  303. uuid(BCDCB538-01C0-46d1-A6A7-52F4D021C272),
  304. helpstring("IAppVersion Interface"),
  305. pointer_default(unique)
  306. ]
  307. interface IAppVersion : IDispatch {
  308. [propget] HRESULT version([out, retval] BSTR*);
  309. // [propget] HRESULT installManifest([out, retval] BSTR*);
  310. // Returns the count of the Packages in the AppVersion.
  311. [propget] HRESULT packageCount([out, retval] long* count);
  312. // Returns an IDispatch of the Package in the AppVersion at the specified
  313. // 0-based index.
  314. [propget] HRESULT package([in] long index,
  315. [out, retval] IDispatch** package);
  316. };
  317. [
  318. object,
  319. dual,
  320. uuid(DCAB8386-4F03-4dbd-A366-D90BC9F68DE6),
  321. helpstring("IPackage Interface"),
  322. pointer_default(unique)
  323. ]
  324. interface IPackage : IDispatch {
  325. // Retrieves the package from the package cache and copies it to the
  326. // directory provided. Returns an error is the package is not available
  327. // locally.
  328. [id(1)] HRESULT get([in] BSTR dir);
  329. // Returns true if the package has been downloaded and is available
  330. // locally.
  331. [propget] HRESULT isAvailable([out, retval] VARIANT_BOOL*);
  332. // Returns the manifest name of the package.
  333. [propget] HRESULT filename([out, retval] BSTR*);
  334. };
  335. // TODO(omaha3): We should figure out what else we are going to want in this
  336. // interface before dogfood even if we do not implement it.
  337. [
  338. object,
  339. dual,
  340. uuid(247954F9-9EDC-4E68-8CC3-150C2B89EADF),
  341. helpstring("ICurrentState Interface"),
  342. pointer_default(unique)
  343. ]
  344. interface ICurrentState : IDispatch {
  345. // This interface is exposed to web clients!
  346. // TODO(omaha3): Update valid comments once we settle on an implementation.
  347. // A value from the CurrentState enum. This value determines which of the
  348. // properties below are valid.
  349. [propget] HRESULT stateValue([out, retval] LONG*);
  350. // The remaining properties are only valid in the specified states. For all
  351. // other states, the values are not specified.
  352. // This property is valid only when stateValue is STATE_UPDATE_AVAILABLE.
  353. [propget] HRESULT availableVersion([out, retval] BSTR*);
  354. // The following three properties are only valid when stateValue is
  355. // STATE_WAITING_TO_DOWNLOAD, STATE_RETRYING_DOWNLOAD, STATE_DOWNLOADING,
  356. // STATE_DOWNLOAD_COMPLETE, STATE_EXTRACTING,
  357. // STATE_APPLYING_DIFFERENTIAL_PATCH, or STATE_READY_TO_INSTALL.
  358. // Bytes downloaded so far.
  359. [propget] HRESULT bytesDownloaded([out, retval] ULONG*);
  360. // Total bytes to download.
  361. [propget] HRESULT totalBytesToDownload([out, retval] ULONG*);
  362. // Estimated download time remaining in ms. -1 indicates unknown.
  363. // Progress may not always be available, so clients should handle the -1 case.
  364. [propget] HRESULT downloadTimeRemainingMs([out, retval] LONG*);
  365. [propget] HRESULT nextRetryTime([out, retval] ULONGLONG*);
  366. // TODO(omaha 3): Need some way to indicate reconnecting, retrying, etc.
  367. // The following two properties are only valid when stateValue is
  368. // STATE_INSTALLING or STATE_INSTALL_COMPLETE.
  369. // Current install progress in percentage from 0 to 100. -1 indicates unknown.
  370. // Progress may not always be available, so clients should handle the -1 case.
  371. [propget] HRESULT installProgress([out, retval] LONG*);
  372. // Estimated download time remaining in ms. -1 indicates unknown.
  373. // Progress may not always be available, so clients should handle the -1 case.
  374. [propget] HRESULT installTimeRemainingMs([out, retval] LONG*);
  375. // The following four properties are only valid when stateValue is
  376. // STATE_ERROR:
  377. // Returns true if the app has been canceled.
  378. [propget] HRESULT isCanceled([out, retval] VARIANT_BOOL* is_canceled);
  379. // Error code.
  380. [propget] HRESULT errorCode([out, retval] LONG*);
  381. // Error extra code.
  382. [propget] HRESULT extraCode1([out, retval] LONG*);
  383. // The following three properties are only valid when stateValue is
  384. // STATE_ERROR or STATE_INSTALL_COMPLETE.
  385. // TODO(omaha3): If STATE_DOWNLOAD_COMPLETE or STATE_READY_TO_INSTALL becomes
  386. // a terminal state, does it support completion messages?
  387. // Completion message, localized in the specified language.
  388. // TODO(omaha3): If we're going to have bundle error messages too, should the
  389. // language be at bundle level? Should bundle have its own language setter?
  390. [propget] HRESULT completionMessage([out, retval] BSTR*);
  391. // Application installer result code. This is to be used as additional
  392. // information only. Success/failure should be determined using errorCode.
  393. // This is an error if errorCode is GOOPDATEINSTALL_E_INSTALLER_FAILED.
  394. [propget] HRESULT installerResultCode([out, retval] LONG*);
  395. // Application installer extra code.
  396. [propget] HRESULT installerResultExtraCode1([out, retval] LONG*);
  397. // A command that needs to be launched by the client after installation.
  398. [propget] HRESULT postInstallLaunchCommandLine([out, retval] BSTR*);
  399. // URL to be launched after restarting the browser.
  400. [propget] HRESULT postInstallUrl([out, retval] BSTR*);
  401. // Returns a PostInstallAction value indicating the action to be taken by the
  402. // client after installation.
  403. [propget] HRESULT postInstallAction([out, retval] LONG*);
  404. }
  405. [
  406. object,
  407. dual,
  408. uuid(4E223325-C16B-4eeb-AEDC-19AA99A237FA),
  409. helpstring("IRegistrationUpdateHook Interface"),
  410. pointer_default(unique)
  411. ]
  412. interface IRegistrationUpdateHook : IDispatch {
  413. HRESULT UpdateRegistry([in] BSTR app_id, [in] VARIANT_BOOL is_machine);
  414. };
  415. [
  416. object,
  417. uuid(b3a47570-0a85-4aea-8270-529d47899603),
  418. helpstring("ICredentialDialog Interface"),
  419. pointer_default(unique)
  420. ]
  421. interface ICredentialDialog : IUnknown {
  422. HRESULT QueryUserForCredentials([in] ULONG_PTR owner_hwnd,
  423. [in] BSTR server,
  424. [in] BSTR message,
  425. [out] BSTR* username,
  426. [out] BSTR* password);
  427. };
  428. // This is a legacy interface that could be removed in future versions. Do not
  429. // use.
  430. [
  431. object,
  432. dual,
  433. uuid(F63F6F8B-ACD5-413C-A44B-0409136D26CB),
  434. helpstring("IPolicyStatus Interface"),
  435. pointer_default(unique)
  436. ]
  437. interface IPolicyStatus : IDispatch {
  438. // Global Update Policies
  439. // Returns the time interval between update checks in minutes.
  440. // 0 indicates updates are disabled.
  441. [propget] HRESULT lastCheckPeriodMinutes([out, retval] DWORD* minutes);
  442. // For domain-joined machines, returns the suppressed times if any, and also
  443. // checks the current time against the times that updates are suppressed.
  444. // Updates are suppressed if the current time falls between the start time and
  445. // the duration.
  446. // The duration does not account for daylight savings time. For instance, if
  447. // the start time is 22:00 hours, and with a duration of 8 hours, the updates
  448. // will be suppressed for 8 hours regardless of whether daylight savings time
  449. // changes happen in between.
  450. [propget] HRESULT updatesSuppressedTimes(
  451. [out] DWORD* start_hour,
  452. [out] DWORD* start_min,
  453. [out] DWORD* duration_min,
  454. [out] VARIANT_BOOL* are_updates_suppressed);
  455. // Returns the value of the "DownloadPreference" group policy or an
  456. // empty string if the group policy does not exist, the policy is unknown, or
  457. // an error happened.
  458. [propget] HRESULT downloadPreferenceGroupPolicy([out, retval] BSTR* pref);
  459. // Gets the total disk size limit for cached packages. When this limit is hit,
  460. // packages may be deleted from oldest until total size is below the limit.
  461. [propget] HRESULT packageCacheSizeLimitMBytes([out, retval] DWORD* limit);
  462. // Gets the package cache life limit. If a cached package is older than this
  463. // limit, it may be deleted.
  464. [propget] HRESULT packageCacheExpirationTimeDays([out, retval] DWORD* days);
  465. // Application Update Policies
  466. // Returns 1 if installation of the specified app is allowed.
  467. // Otherwise, returns 0.
  468. [propget] HRESULT effectivePolicyForAppInstalls([in] BSTR app_id,
  469. [out, retval] DWORD* policy);
  470. // Returns 1 if updates of the specified app is allowed.
  471. // Otherwise, returns one of 0 (Disabled), 2 (ManualUpdatesOnly), or
  472. // 3 (AutomaticUpdatesOnly).
  473. [propget] HRESULT effectivePolicyForAppUpdates([in] BSTR app_id,
  474. [out, retval] DWORD* policy);
  475. // Returns the target version prefix for the app, if the machine is joined to
  476. // a domain and has the corresponding policy set.
  477. // Examples:
  478. // * "" (or not configured): update to latest version available.
  479. // * "55.": update to any minor version of 55 (e.g. 55.24.34 or 55.60.2).
  480. // * "55.2.": update to any minor version of 55.2 (e.g. 55.2.34 or 55.2.2).
  481. // * "55.24.34": update to this specific version only.
  482. [propget] HRESULT targetVersionPrefix([in] BSTR app_id,
  483. [out, retval] BSTR* prefix);
  484. // Returns whether the RollbackToTargetVersion policy has been set for the
  485. // app. If RollbackToTargetVersion is set, the TargetVersionPrefix policy
  486. // governs the version to rollback clients with higher versions to.
  487. [propget] HRESULT isRollbackToTargetVersionAllowed(
  488. [in] BSTR app_id,
  489. [out, retval] VARIANT_BOOL* rollback_allowed);
  490. };
  491. // IPolicyStatusValue represents the managed state of a single Google Update
  492. // policy. It contains the current source and value, as well as if any conflicts
  493. // exist with that policy.
  494. [
  495. object,
  496. dual,
  497. uuid(27634814-8E41-4C35-8577-980134A96544),
  498. helpstring("IPolicyStatusValue Interface"),
  499. pointer_default(unique)
  500. ]
  501. interface IPolicyStatusValue : IDispatch {
  502. [propget] HRESULT source([out, retval] BSTR*);
  503. [propget] HRESULT value([out, retval] BSTR*);
  504. [propget] HRESULT hasConflict([out, retval] VARIANT_BOOL* has_conflict);
  505. [propget] HRESULT conflictSource([out, retval] BSTR*);
  506. [propget] HRESULT conflictValue([out, retval] BSTR*);
  507. }
  508. // IPolicyStatus2 exposes the following:
  509. // * properties for Google Update that includes Global Update state, such as the
  510. // Version of the Updater, the Time that Updates were checked for last.
  511. // * A way to refresh the latest policies from the DM Server.
  512. // * the managed state of Omaha policies. Each policy returns an
  513. // IPolicyStatusValue that can be queried for the current source and value, as
  514. // well as if any conflicts exist with that policy.
  515. // IPolicyStatusValue is implemented by an object that marshals itself by
  516. // value. To get the "current" value, the policy needs to be queried fresh.
  517. [
  518. object,
  519. dual,
  520. uuid(34527502-D3DB-4205-A69B-789B27EE0414),
  521. helpstring("IPolicyStatus2 Interface"),
  522. pointer_default(unique)
  523. ]
  524. interface IPolicyStatus2 : IDispatch {
  525. // Global Update Status.
  526. // Returns the running version of the Updater. For instance, 1.3.35.454.
  527. [propget] HRESULT updaterVersion([out, retval] BSTR* version);
  528. // Returns the last time that the Updater successfully checked for updates.
  529. [propget] HRESULT lastCheckedTime([out, retval] DATE* last_checked);
  530. // DM policy cache refresh.
  531. // Gets the latest policies from the DM Server.
  532. HRESULT refreshPolicies();
  533. // Global Update Policies
  534. // Returns the time interval between update checks in minutes.
  535. // 0 indicates updates are disabled.
  536. [propget] HRESULT lastCheckPeriodMinutes(
  537. [out, retval] IPolicyStatusValue** value);
  538. // For domain-joined machines, returns the suppressed times if any, and also
  539. // checks the current time against the times that updates are suppressed.
  540. // Updates are suppressed if the current time falls between the start time and
  541. // the duration.
  542. // The duration does not account for daylight savings time. For instance, if
  543. // the start time is 22:00 hours, and with a duration of 8 hours, the updates
  544. // will be suppressed for 8 hours regardless of whether daylight savings time
  545. // changes happen in between.
  546. [propget] HRESULT updatesSuppressedTimes(
  547. [out] IPolicyStatusValue** value,
  548. VARIANT_BOOL* are_updates_suppressed);
  549. // Returns the value of the "DownloadPreference" group policy or an
  550. // empty string if the group policy does not exist, the policy is unknown, or
  551. // an error happened.
  552. [propget] HRESULT downloadPreferenceGroupPolicy(
  553. [out, retval] IPolicyStatusValue** value);
  554. // Gets the total disk size limit for cached packages. When this limit is hit,
  555. // packages may be deleted from oldest until total size is below the limit.
  556. [propget] HRESULT packageCacheSizeLimitMBytes(
  557. [out, retval] IPolicyStatusValue** value);
  558. // Gets the package cache life limit. If a cached package is older than this
  559. // limit, it may be deleted.
  560. [propget] HRESULT packageCacheExpirationTimeDays(
  561. [out, retval] IPolicyStatusValue** value);
  562. // Gets the proxy policy values.
  563. [propget] HRESULT proxyMode([out, retval] IPolicyStatusValue** value);
  564. [propget] HRESULT proxyPacUrl([out, retval] IPolicyStatusValue** value);
  565. [propget] HRESULT proxyServer([out, retval] IPolicyStatusValue** value);
  566. // Application Update Policies
  567. // Returns 1 if installation of the specified app is allowed.
  568. // Otherwise, returns 0.
  569. [propget] HRESULT effectivePolicyForAppInstalls(
  570. [in] BSTR app_id,
  571. [out, retval] IPolicyStatusValue** value);
  572. // Returns 1 if updates of the specified app is allowed.
  573. // Otherwise, returns one of 0 (Disabled), 2 (ManualUpdatesOnly), or
  574. // 3 (AutomaticUpdatesOnly).
  575. [propget] HRESULT effectivePolicyForAppUpdates(
  576. [in] BSTR app_id,
  577. [out, retval] IPolicyStatusValue** value);
  578. // Returns the target version prefix for the app, if the machine is joined to
  579. // a domain and has the corresponding policy set.
  580. // Examples:
  581. // * "" (or not configured): update to latest version available.
  582. // * "55.": update to any minor version of 55 (e.g. 55.24.34 or 55.60.2).
  583. // * "55.2.": update to any minor version of 55.2 (e.g. 55.2.34 or 55.2.2).
  584. // * "55.24.34": update to this specific version only.
  585. [propget] HRESULT targetVersionPrefix(
  586. [in] BSTR app_id,
  587. [out, retval] IPolicyStatusValue** value);
  588. // Returns whether the RollbackToTargetVersion policy has been set for the
  589. // app. If RollbackToTargetVersion is set, the TargetVersionPrefix policy
  590. // governs the version to rollback clients with higher versions to.
  591. [propget] HRESULT isRollbackToTargetVersionAllowed(
  592. [in] BSTR app_id, [out, retval] IPolicyStatusValue** value);
  593. // Returns the target channel for the app, if the machine is joined to a
  594. // domain and has the corresponding policy set.
  595. [propget] HRESULT targetChannel([in] BSTR app_id,
  596. [out, retval] IPolicyStatusValue** value);
  597. };
  598. // BEGIN gupdatem interfaces.
  599. // The following interfaces are exposed as a narrower version of the
  600. // IGoogleUpdate3 interface from the gupdatem service. These interfaces are
  601. // meant for use from medium and low integrity clients.
  602. [
  603. object,
  604. dual,
  605. uuid(494B20CF-282E-4BDD-9F5D-B70CB09D351E),
  606. helpstring("IGoogleUpdate3Web Interface"),
  607. pointer_default(unique)
  608. ]
  609. interface IGoogleUpdate3Web : IDispatch {
  610. HRESULT createAppBundleWeb([out, retval] IDispatch** app_bundle_web);
  611. };
  612. [
  613. object,
  614. uuid(2D363682-561D-4c3a-81C6-F2F82107562A),
  615. helpstring("IGoogleUpdate3WebSecurity Interface"),
  616. pointer_default(unique)
  617. ]
  618. interface IGoogleUpdate3WebSecurity : IUnknown {
  619. HRESULT setOriginURL([in] BSTR origin_url);
  620. };
  621. [
  622. object,
  623. dual,
  624. uuid(DD42475D-6D46-496a-924E-BD5630B4CBBA),
  625. helpstring("IAppBundleWeb Interface"),
  626. pointer_default(unique)
  627. ]
  628. interface IAppBundleWeb : IDispatch {
  629. [id(2)] HRESULT createApp([in] BSTR app_guid,
  630. [in] BSTR brand_code,
  631. [in] BSTR language,
  632. [in] BSTR ap);
  633. [id(3)] HRESULT createInstalledApp([in] BSTR app_id);
  634. [id(4)] HRESULT createAllInstalledApps();
  635. [propget] HRESULT displayLanguage([out, retval] BSTR*);
  636. [propput] HRESULT displayLanguage([in] BSTR);
  637. [propput] HRESULT parentHWND([in] ULONG_PTR hwnd);
  638. [propget] HRESULT length([out, retval] int* index);
  639. [id(DISPID_VALUE), propget] HRESULT appWeb(
  640. [in] int index, [out, retval] IDispatch** app_web);
  641. HRESULT initialize();
  642. HRESULT checkForUpdate();
  643. HRESULT download();
  644. HRESULT install();
  645. HRESULT pause();
  646. HRESULT resume();
  647. HRESULT cancel();
  648. HRESULT downloadPackage([in] BSTR app_id, [in] BSTR package_name);
  649. [propget] HRESULT currentState([out, retval] VARIANT* current_state);
  650. };
  651. [
  652. object,
  653. dual,
  654. uuid(18D0F672-18B4-48e6-AD36-6E6BF01DBBC4),
  655. helpstring("IAppWeb Interface"),
  656. pointer_default(unique)
  657. ]
  658. interface IAppWeb : IDispatch {
  659. [propget] HRESULT appId([out, retval] BSTR*);
  660. // Returns an IAppVersionWeb IDispatch object.
  661. [propget] HRESULT currentVersionWeb([out, retval] IDispatch** current);
  662. [propget] HRESULT nextVersionWeb([out, retval] IDispatch** next);
  663. // Returns an IAppCommandWeb IDispatch object, or NULL.
  664. [propget] HRESULT command([in] BSTR command_id,
  665. [out, retval] IDispatch** command);
  666. HRESULT cancel();
  667. [propget] HRESULT currentState([out, retval] IDispatch** current_state);
  668. HRESULT launch();
  669. HRESULT uninstall();
  670. [propget] HRESULT serverInstallDataIndex([out, retval] BSTR*);
  671. [propput] HRESULT serverInstallDataIndex([in] BSTR);
  672. };
  673. [
  674. object,
  675. dual,
  676. uuid(8476CE12-AE1F-4198-805C-BA0F9B783F57),
  677. helpstring("IAppCommandWeb Interface"),
  678. pointer_default(unique)
  679. ]
  680. interface IAppCommandWeb : IDispatch {
  681. // Use values from the AppCommandStatus enum.
  682. [propget] HRESULT status([out, retval] UINT*);
  683. [propget] HRESULT exitCode([out, retval] DWORD*);
  684. [propget] HRESULT output([out, retval] BSTR*);
  685. HRESULT execute([in, optional] VARIANT arg1,
  686. [in, optional] VARIANT arg2,
  687. [in, optional] VARIANT arg3,
  688. [in, optional] VARIANT arg4,
  689. [in, optional] VARIANT arg5,
  690. [in, optional] VARIANT arg6,
  691. [in, optional] VARIANT arg7,
  692. [in, optional] VARIANT arg8,
  693. [in, optional] VARIANT arg9);
  694. };
  695. [
  696. object,
  697. dual,
  698. uuid(0CD01D1E-4A1C-489d-93B9-9B6672877C57),
  699. helpstring("IAppVersionWeb Interface"),
  700. pointer_default(unique)
  701. ]
  702. interface IAppVersionWeb : IDispatch {
  703. [propget] HRESULT version([out, retval] BSTR*);
  704. // Returns the count of the Packages in the AppVersion.
  705. [propget] HRESULT packageCount([out, retval] long* count);
  706. // TODO(omaha3): Implement this after a security review.
  707. // Returns an IDispatch of the Package in the AppVersion at the specified
  708. // 0-based index.
  709. [propget] HRESULT packageWeb([in] long index,
  710. [out, retval] IDispatch** package);
  711. };
  712. [
  713. object,
  714. dual,
  715. uuid(2E629606-312A-482f-9B12-2C4ABF6F0B6D),
  716. helpstring("ICoCreateAsyncStatus Interface"),
  717. pointer_default(unique)
  718. ]
  719. interface ICoCreateAsyncStatus : IDispatch {
  720. [propget] HRESULT isDone([out, retval] VARIANT_BOOL* is_done);
  721. [propget] HRESULT completionHResult([out, retval] LONG* hr);
  722. [propget] HRESULT createdInstance([out, retval] IDispatch** instance);
  723. };
  724. [
  725. object,
  726. uuid(DAB1D343-1B2A-47f9-B445-93DC50704BFE),
  727. helpstring("ICoCreateAsync Interface"),
  728. pointer_default(unique)
  729. ]
  730. interface ICoCreateAsync : IUnknown {
  731. HRESULT createOmahaMachineServerAsync(
  732. [in] BSTR origin_url,
  733. [in] BOOL create_elevated,
  734. [out, retval] ICoCreateAsyncStatus** status);
  735. };
  736. // END gupdatem interfaces.
  737. // BEGIN Legacy google_update_idl interfaces.
  738. [
  739. object,
  740. uuid(5B25A8DC-1780-4178-A629-6BE8B8DEFAA2),
  741. oleautomation,
  742. nonextensible,
  743. pointer_default(unique)
  744. ]
  745. interface IBrowserHttpRequest2 : IUnknown {
  746. // This method will send request/data from the browser process.
  747. // @param url URL where request will be send.
  748. // @param post_data POST data, if any. Can be NULL.
  749. // @param request_headers HTTP request headers, if any. Can be NULL.
  750. // @param response_headers_needed HTTP response headers that are needed.
  751. // Should be one of the values listed here:
  752. // http://msdn.microsoft.com/aa385351.aspx
  753. // The input is a SAFEARRAY of DWORD. Can be a
  754. // VT_EMPTY.
  755. // @param response_headers HTTP response headers, returned as SAFEARRAY
  756. // of BSTR. The values corresponding one-to-one
  757. // with the response_headers_needed values. Can
  758. // be NULL if response_headers_needed==VT_EMPTY
  759. // @param response_code HTTP response code.
  760. // @param cache_filename Cache file that contains the response data.
  761. HRESULT Send([in] BSTR url,
  762. [in] BSTR post_data,
  763. [in] BSTR request_headers,
  764. [in] VARIANT response_headers_needed,
  765. [out] VARIANT* response_headers,
  766. [out] DWORD* response_code,
  767. [out] BSTR* cache_filename);
  768. };
  769. [
  770. object,
  771. oleautomation,
  772. uuid(128C2DA6-2BC0-44c0-B3F6-4EC22E647964),
  773. helpstring("Google Update IProcessLauncher Interface"),
  774. pointer_default(unique)
  775. ]
  776. interface IProcessLauncher : IUnknown {
  777. // @param cmd_line The full command line to execute.
  778. HRESULT LaunchCmdLine([in, string] const WCHAR* cmd_line);
  779. // @param browser_type The browser to start.
  780. // @param url The url to launch the browser with.
  781. HRESULT LaunchBrowser([in] DWORD browser_type,
  782. [in, string] const WCHAR* url);
  783. // @param app_id Unique id to identify the calling client application
  784. // @param event_id Unique id for the command
  785. // @param caller_proc_id The process id of the calling process
  786. // @param proc_handle The process handle valid in the caller's context
  787. HRESULT LaunchCmdElevated([in, string] const WCHAR* app_guid,
  788. [in, string] const WCHAR* cmd_id,
  789. [in] DWORD caller_proc_id,
  790. [out] ULONG_PTR* proc_handle);
  791. };
  792. [
  793. object,
  794. oleautomation,
  795. uuid(D106AB5F-A70E-400E-A21B-96208C1D8DBB),
  796. helpstring("Google Update IProcessLauncher2 Interface"),
  797. pointer_default(unique)
  798. ]
  799. interface IProcessLauncher2 : IProcessLauncher {
  800. // Launches the command line, returning the COM server's process ID and
  801. // handles to the launched process and its stdout. The caller is responsible
  802. // for closing the returned handles (by passing DUPLICATE_CLOSE_SOURCE to
  803. // DuplicateHandle, for instance).
  804. // @param cmd_line The full command line to execute.
  805. // @param server_proc_id The process id of the IProcessLauncher2 COM server.
  806. // @param proc_handle The process handle valid in the server's context
  807. // @param stdout_handle The child process's stdout handle valid in the
  808. // server's context.
  809. HRESULT LaunchCmdLineEx([in, string] const WCHAR* cmd_line,
  810. [out] DWORD* server_proc_id,
  811. [out] ULONG_PTR* proc_handle,
  812. [out] ULONG_PTR* stdout_handle);
  813. };
  814. typedef enum {
  815. COMPLETION_CODE_SUCCESS = 1,
  816. COMPLETION_CODE_SUCCESS_CLOSE_UI,
  817. COMPLETION_CODE_ERROR,
  818. COMPLETION_CODE_RESTART_ALL_BROWSERS,
  819. COMPLETION_CODE_REBOOT,
  820. COMPLETION_CODE_RESTART_BROWSER,
  821. COMPLETION_CODE_RESTART_ALL_BROWSERS_NOTICE_ONLY,
  822. COMPLETION_CODE_REBOOT_NOTICE_ONLY,
  823. COMPLETION_CODE_RESTART_BROWSER_NOTICE_ONLY,
  824. COMPLETION_CODE_RUN_COMMAND,
  825. } LegacyCompletionCodes;
  826. [
  827. object,
  828. oleautomation,
  829. uuid(1C642CED-CA3B-4013-A9DF-CA6CE5FF6503),
  830. helpstring("GoogleUpdate UI-specific events Interface"),
  831. pointer_default(unique)
  832. ]
  833. interface IProgressWndEvents : IUnknown {
  834. // The UI is closing down. The user has clicked on either the "X" or the
  835. // other buttons of the UI to close the window.
  836. HRESULT DoClose();
  837. // Pause has been clicked on.
  838. HRESULT DoPause();
  839. // Resume has been clicked on.
  840. HRESULT DoResume();
  841. // RestartBrowsers button has been clicked on.
  842. HRESULT DoRestartBrowsers();
  843. // Reboot button has been clicked on.
  844. HRESULT DoReboot();
  845. // Launch Browser.
  846. HRESULT DoLaunchBrowser([in, string] const WCHAR* url);
  847. };
  848. [
  849. object,
  850. oleautomation,
  851. uuid(49D7563B-2DDB-4831-88C8-768A53833837),
  852. helpstring("IJobObserver Interface"),
  853. pointer_default(unique)
  854. ]
  855. interface IJobObserver : IUnknown {
  856. HRESULT OnShow();
  857. HRESULT OnCheckingForUpdate();
  858. HRESULT OnUpdateAvailable([in, string] const WCHAR* version_string);
  859. HRESULT OnWaitingToDownload();
  860. HRESULT OnDownloading([in] int time_remaining_ms, [in] int pos);
  861. HRESULT OnWaitingToInstall();
  862. HRESULT OnInstalling();
  863. HRESULT OnPause();
  864. HRESULT OnComplete([in] LegacyCompletionCodes code,
  865. [in, string] const WCHAR* completion_text);
  866. HRESULT SetEventSink([in] IProgressWndEvents* ui_sink);
  867. };
  868. [
  869. object,
  870. oleautomation,
  871. uuid(19692F10-ADD2-4EFF-BE54-E61C62E40D13),
  872. helpstring("IJobObserver2 Interface"),
  873. pointer_default(unique)
  874. ]
  875. interface IJobObserver2 : IUnknown {
  876. // @param time_remaining_ms Remaining install time.
  877. // @param pos Current install progress in percentage from 0 to 100. -1
  878. // indicates unknown.
  879. HRESULT OnInstalling2([in] int time_remaining_ms, [in] int pos);
  880. };
  881. [
  882. object,
  883. oleautomation,
  884. uuid(31AC3F11-E5EA-4a85-8A3D-8E095A39C27B),
  885. helpstring("IGoogleUpdate Interface"),
  886. pointer_default(unique)
  887. ]
  888. interface IGoogleUpdate : IUnknown {
  889. // @param guid The guid for the app to be updated.
  890. // @param observer The eventing interface.
  891. HRESULT CheckForUpdate([in, string] const WCHAR* guid,
  892. [in] IJobObserver* observer);
  893. // @param guid The guid for the app to be updated.
  894. // @param observer The eventing interface.
  895. HRESULT Update([in, string] const WCHAR* guid,
  896. [in] IJobObserver* observer);
  897. };
  898. // IGoogleUpdateCore is an internal Omaha interface.
  899. [
  900. object,
  901. oleautomation,
  902. uuid(909489C2-85A6-4322-AA56-D25278649D67),
  903. helpstring("Google Update Core Interface"),
  904. pointer_default(unique)
  905. ]
  906. interface IGoogleUpdateCore : IUnknown
  907. {
  908. // Runs a command elevated.
  909. //
  910. // @param app_id Unique id to identify the calling client application
  911. // @param event_id Unique id for the command
  912. // @param caller_proc_id The process id of the calling process
  913. // @param proc_handle The process handle valid in the caller's context
  914. HRESULT LaunchCmdElevated([in, string] const WCHAR* app_guid,
  915. [in, string] const WCHAR* cmd_id,
  916. [in] DWORD caller_proc_id,
  917. [out] ULONG_PTR* proc_handle);
  918. };
  919. // END Legacy google_update_idl interfaces.
  920. [
  921. uuid(655DD85A-3C0D-4674-9C58-AF7168C5861E),
  922. version(1.0),
  923. helpstring("Google Update 3.0 Type Library")
  924. ]
  925. library GoogleUpdate3Lib {
  926. importlib("stdole2.tlb");
  927. // These Interfaces are forward declared to ensure that they are described in
  928. // the generated TLB file. This is required for ATL to correctly implement the
  929. // corresponding IDispatch interfaces.
  930. interface IGoogleUpdate3;
  931. interface IAppBundle;
  932. interface IApp;
  933. interface IApp2;
  934. interface IAppCommand;
  935. interface IAppCommand2;
  936. interface IAppVersion;
  937. interface IPackage;
  938. interface ICurrentState;
  939. interface IPolicyStatus;
  940. interface IPolicyStatus2;
  941. interface IPolicyStatusValue;
  942. interface IGoogleUpdate3Web;
  943. interface IAppBundleWeb;
  944. interface IAppWeb;
  945. interface IAppCommandWeb;
  946. interface IAppVersionWeb;
  947. interface ICoCreateAsyncStatus;
  948. [
  949. uuid(022105BD-948A-40c9-AB42-A3300DDF097F),
  950. helpstring("GoogleUpdate3 Class for per-user applications")
  951. ]
  952. coclass GoogleUpdate3UserClass {
  953. [default] interface IDispatch;
  954. }
  955. [
  956. uuid(4EB61BAC-A3B6-4760-9581-655041EF4D69),
  957. helpstring("GoogleUpdate3 Service Class for machine applications")
  958. ]
  959. coclass GoogleUpdate3ServiceClass {
  960. [default] interface IDispatch;
  961. }
  962. [
  963. uuid(22181302-A8A6-4f84-A541-E5CBFC70CC43),
  964. helpstring("GoogleUpdate3Web for user applications")
  965. ]
  966. coclass GoogleUpdate3WebUserClass {
  967. [default] interface IDispatch;
  968. }
  969. [
  970. uuid(8A1D4361-2C08-4700-A351-3EAA9CBFF5E4),
  971. helpstring("Pass-through broker for the GoogleUpdate3WebServiceClass")
  972. ]
  973. coclass GoogleUpdate3WebMachineClass {
  974. [default] interface IDispatch;
  975. }
  976. [
  977. uuid(534F5323-3569-4f42-919D-1E1CF93E5BF6),
  978. helpstring("GoogleUpdate3Web")
  979. ]
  980. coclass GoogleUpdate3WebServiceClass {
  981. [default] interface IDispatch;
  982. }
  983. [
  984. uuid(598FE0E5-E02D-465d-9A9D-37974A28FD42),
  985. helpstring("Fallback mechanism if GoogleUpdate3WebServiceClass fails")
  986. ]
  987. coclass GoogleUpdate3WebMachineFallbackClass {
  988. [default] interface IDispatch;
  989. }
  990. [
  991. uuid(E8CF3E55-F919-49d9-ABC0-948E6CB34B9F),
  992. helpstring("CurrentStateUserClass")
  993. ]
  994. coclass CurrentStateUserClass {
  995. [default] interface ICurrentState;
  996. }
  997. [
  998. uuid(9D6AA569-9F30-41ad-885A-346685C74928),
  999. helpstring("CurrentStateMachineClass")
  1000. ]
  1001. coclass CurrentStateMachineClass {
  1002. [default] interface ICurrentState;
  1003. }
  1004. [
  1005. uuid(7DE94008-8AFD-4c70-9728-C6FBFFF6A73E),
  1006. helpstring("CoCreateAsyncClass")
  1007. ]
  1008. coclass CoCreateAsyncClass {
  1009. [default] interface IUnknown;
  1010. }
  1011. [
  1012. uuid(e67be843-bbbe-4484-95fb-05271ae86750),
  1013. helpstring("CredentialDialogUserClass")
  1014. ]
  1015. coclass CredentialDialogUserClass {
  1016. [default] interface IUnknown;
  1017. }
  1018. [
  1019. uuid(25461599-633d-42b1-84fb-7cd68d026e53),
  1020. helpstring("CredentialDialogMachineClass")
  1021. ]
  1022. coclass CredentialDialogMachineClass {
  1023. [default] interface IUnknown;
  1024. }
  1025. [
  1026. uuid(85D8EE2F-794F-41F0-BB03-49D56A23BEF4),
  1027. helpstring("PolicyStatusValueUserClass")
  1028. ]
  1029. coclass PolicyStatusValueUserClass {
  1030. [default] interface IUnknown;
  1031. }
  1032. [
  1033. uuid(C6271107-A214-4F11-98C0-3F16BC670D28),
  1034. helpstring("PolicyStatusValueMachineClass")
  1035. ]
  1036. coclass PolicyStatusValueMachineClass {
  1037. [default] interface IUnknown;
  1038. }
  1039. [
  1040. uuid(6DDCE70D-A4AE-4E97-908C-BE7B2DB750AD),
  1041. helpstring("Policy Status for per-user applications.")
  1042. ]
  1043. coclass PolicyStatusUserClass {
  1044. [default] interface IUnknown;
  1045. }
  1046. [
  1047. uuid(521FDB42-7130-4806-822A-FC5163FAD983),
  1048. helpstring("Policy Status pass-through broker for machine applications.")
  1049. ]
  1050. coclass PolicyStatusMachineClass {
  1051. [default] interface IUnknown;
  1052. }
  1053. [
  1054. uuid(1C4CDEFF-756A-4804-9E77-3E8EB9361016),
  1055. helpstring("Policy Status for per-machine applications.")
  1056. ]
  1057. coclass PolicyStatusMachineServiceClass {
  1058. [default] interface IUnknown;
  1059. }
  1060. [
  1061. uuid(ADDF22CF-3E9B-4CD7-9139-8169EA6636E4),
  1062. helpstring("Fallback for if PolicyStatusMachineServiceClass fails.")
  1063. ]
  1064. coclass PolicyStatusMachineFallbackClass {
  1065. [default] interface IUnknown;
  1066. }
  1067. [
  1068. uuid(02B24573-5230-485A-8787-AD56B20E8ADB),
  1069. helpstring("GoogleComProxyMachineClass")
  1070. ]
  1071. coclass GoogleComProxyMachineClass {
  1072. [default] interface IUnknown;
  1073. }
  1074. [
  1075. uuid(D89179AA-B869-4491-AC5F-615D2B10696E),
  1076. helpstring("GoogleComProxyUserClass")
  1077. ]
  1078. coclass GoogleComProxyUserClass {
  1079. [default] interface IUnknown;
  1080. }
  1081. // BEGIN Legacy google_update_idl coclasses.
  1082. [
  1083. uuid(ABC01078-F197-4b0b-ADBC-CFE684B39C82),
  1084. helpstring("ProcessLauncherClass Class")
  1085. ]
  1086. coclass ProcessLauncherClass {
  1087. [default] interface IUnknown;
  1088. }
  1089. [
  1090. uuid(2F0E2680-9FF5-43c0-B76E-114A56E93598),
  1091. helpstring("OnDemand updates for per-user applications.")
  1092. ]
  1093. coclass OnDemandUserAppsClass {
  1094. [default] interface IUnknown;
  1095. }
  1096. [
  1097. uuid(6F8BD55B-E83D-4a47-85BE-81FFA8057A69),
  1098. helpstring("OnDemand pass-through broker for machine applications.")
  1099. ]
  1100. coclass OnDemandMachineAppsClass {
  1101. [default] interface IUnknown;
  1102. }
  1103. [
  1104. uuid(9465B4B4-5216-4042-9A2C-754D3BCDC410),
  1105. helpstring("OnDemand updates for per-machine applications.")
  1106. ]
  1107. coclass OnDemandMachineAppsServiceClass {
  1108. [default] interface IUnknown;
  1109. }
  1110. [
  1111. uuid(B3D28DBD-0DFA-40e4-8071-520767BADC7E),
  1112. helpstring("Fallback for if OnDemandMachineAppsServiceClass fails.")
  1113. ]
  1114. coclass OnDemandMachineAppsFallbackClass {
  1115. [default] interface IUnknown;
  1116. }
  1117. [
  1118. uuid(E225E692-4B47-4777-9BED-4FD7FE257F0E),
  1119. helpstring("GoogleUpdateCore Class")
  1120. ]
  1121. coclass GoogleUpdateCoreClass
  1122. {
  1123. [default] interface IUnknown;
  1124. }
  1125. [
  1126. uuid(9B2340A0-4068-43d6-B404-32E27217859D),
  1127. helpstring("GoogleUpdateCore Machine Class")
  1128. ]
  1129. coclass GoogleUpdateCoreMachineClass
  1130. {
  1131. [default] interface IUnknown;
  1132. }
  1133. // END Legacy google_update_idl coclasses.
  1134. };