MiKTeX 2.9
include/MiKTeX209-packagemanager.idl
00001 /* mpm.idl:                                                     -*- IDL -*-
00002 
00003    Copyright (C) 2006-2008 Christian Schenk
00004 
00005    This file is part of MiKTeX Package Manager.
00006 
00007    MiKTeX Package Manager is free software; you can redistribute it
00008    and/or modify it under the terms of the GNU General Public License
00009    as published by the Free Software Foundation; either version 2, or
00010    (at your option) any later version.
00011    
00012    MiKTeX Package Manager is distributed in the hope that it will be
00013    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
00014    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015    GNU General Public License for more details.
00016    
00017    You should have received a copy of the GNU General Public License
00018    along with MiKTeX Package Manager; if not, write to the Free
00019    Software Foundation, 59 Temple Place - Suite 330, Boston, MA
00020    02111-1307, USA. */
00021 
00022 import "oaidl.idl";
00023 import "ocidl.idl";
00024 
00025 import "miktexidl.idl";
00026 
00027 /* _________________________________________________________________________
00028    
00029    MD5
00030    _________________________________________________________________________ */
00031 
00035 typedef [uuid(F92D6E8F-22CC-4585-8309-58440C5A0DFB)] struct MD5
00036 {
00038   BYTE bits[16];
00039 } MD5;
00040 
00041 
00042 /* _________________________________________________________________________
00043    
00044    PackageInfo
00045    _________________________________________________________________________ */
00046 
00048 typedef [uuid(22A5E6E6-04B3-4540-A122-6A612210F52E)] struct PackageInfo
00049 {
00051   BSTR deploymentName;
00053   BSTR displayName;
00055   BSTR title;
00057   BSTR version;
00059   BSTR description;
00061   BSTR creator;
00063   DOUBLE sizeRunFiles;
00065   DOUBLE sizeDocFiles;
00067   DOUBLE sizeSourceFiles;
00069   LONG numRunFiles;
00071   LONG numDocFiles;
00073   LONG numSourceFiles;
00075   DATE timePackaged;
00077   DATE timeInstalled;
00079   LONG archiveFileSize;
00081   MD5 digest;
00083   VARIANT_BOOL isInstalled;
00084 } PackageInfo;
00085 
00086 /* _________________________________________________________________________
00087    
00088    IPackageInstallerCallback
00089    _________________________________________________________________________ */
00090 
00095 [
00096   object,
00097   uuid(4B081787-2C08-4AFD-80E1-B4B3E23324B4),
00098   nonextensible,
00099   helpstring("IPackageInstallerCallback Interface"),
00100   pointer_default(unique)
00101 ]
00102 interface IPackageInstallerCallback : IUnknown
00103 {
00106   [
00107     helpstring("method ReportLine")
00108   ]
00109   HRESULT ReportLine ([in] BSTR line);
00110 
00114   [
00115     helpstring("method OnRetryableError")
00116   ]
00117   HRESULT
00118   OnRetryableError ([in] BSTR                   message,
00119                     [out,retval] VARIANT_BOOL * doContinue);
00120 
00124   [
00125     helpstring("method OnProgress")
00126   ]
00127   HRESULT
00128   OnProgress ([in] LONG nf, [out,retval] VARIANT_BOOL * doContinue);
00129 };
00130 
00131 /* _________________________________________________________________________
00132    
00133    IPackageInstaller
00134    _________________________________________________________________________ */
00135 
00137 [
00138   object,
00139   uuid(74C7EE83-4851-4766-B471-9CF29E7C2DA3),
00140   dual,
00141   nonextensible,
00142   helpstring("IPackageInstaller Interface"),
00143   pointer_default(unique)
00144 ]
00145 interface IPackageInstaller : IDispatch
00146 {
00151   [
00152     id(1),
00153     helpstring("method Add")
00154   ]
00155   HRESULT
00156   Add ([in] BSTR packageName, [in] VARIANT_BOOL toBeInstalled);
00157 
00161   [
00162     id(2),
00163     helpstring("method SetCallback")
00164   ]
00165   HRESULT
00166   SetCallback ([in] IUnknown * callback);
00167 
00169   [
00170     id(3),
00171     helpstring("method InstallRemove")
00172   ]
00173   HRESULT
00174   InstallRemove ();
00175 
00178   [
00179     id(4),
00180     helpstring("method GetLastError")
00181   ]
00182   HRESULT
00183   GetErrorInfo ([out,retval] ErrorInfo * errorInfo);
00184 
00186   [
00187     id(5),
00188     helpstring("method UpdateDb")
00189   ]
00190   HRESULT
00191   UpdateDb ();
00192 
00195   [
00196     id(6),
00197     helpstring("method SetRepository")
00198   ]
00199   HRESULT
00200   SetRepository ([in] BSTR repository);
00201 };
00202 
00203 /* _________________________________________________________________________
00204    
00205    IPackageManager
00206    _________________________________________________________________________ */
00207 
00209 [
00210   object,
00211   uuid(C6A0E0A9-532D-46DF-8969-0E0A17539FC9),
00212   dual,
00213   nonextensible,
00214   helpstring("IPackageManager Interface"),
00215   pointer_default(unique)
00216 ]
00217 interface IPackageManager : IDispatch
00218 {
00221   [
00222     id(1),
00223     helpstring("method CreateInstaller")
00224   ]
00225   HRESULT
00226   CreateInstaller ([out,retval] IPackageInstaller ** installer);
00227 
00231   [
00232     id(2),
00233     helpstring("method GetPackageInfo")
00234   ]
00235   HRESULT
00236   GetPackageInfo ([in] BSTR                     packageName,
00237                   [out,retval] PackageInfo *    packageInfo);
00238 };
00239 
00240 /* _________________________________________________________________________
00241    
00242    IPackageIterator
00243    _________________________________________________________________________ */
00244 
00246 [
00247   object,
00248   uuid(D02EF17D-1CEF-450B-9C58-ABBB3AE286CC),
00249   helpstring("IPackageIterator Interface"),
00250   pointer_default(unique)
00251 ]
00252 interface IPackageIterator : IUnknown
00253 {
00256   [
00257     helpstring("method GetNextPackageInfo")
00258   ]
00259   HRESULT
00260   GetNextPackageInfo ([out] PackageInfo * packageInfo,
00261                       [out,retval] VARIANT_BOOL * done);
00262 };
00263 
00264 /* _________________________________________________________________________
00265    
00266    IPackageManager2
00267    _________________________________________________________________________ */
00268 
00270 [
00271   object,
00272   uuid(847D93E9-E086-4F09-B8C5-91CDCCF12CF3),
00273   dual,
00274   nonextensible,
00275   helpstring("IPackageManager2 Interface"),
00276   pointer_default(unique)
00277 ]
00278 interface IPackageManager2 : IPackageManager
00279 {
00282   [
00283     id(3),
00284     helpstring("method CreatePackageIterator")
00285   ]
00286   HRESULT
00287   CreatePackageIterator ([out,retval] IPackageIterator ** iter);
00288 };
00289 
00290 /* _________________________________________________________________________
00291    
00292    MiKTeXPackageManager2_9
00293    _________________________________________________________________________ */
00294 
00296 [
00297   uuid(676719BB-7737-43AA-9B7C-49C83644AE87),
00298   version(1.0),
00299   helpstring("MiKTeX 2.9 Package Manager")
00300 ]
00301 library MiKTeXPackageManager2_9
00302 {
00303   importlib("stdole2.tlb");
00304 
00310   [
00311     uuid(25E664C9-989C-4EDA-A9A4-C9E45FB447D3),
00312     helpstring("MiKTeX 2.9 Package Manager")
00313   ]
00314   coclass PackageManager2_9
00315   {
00316     interface IPackageManager;
00317     [default] interface IPackageManager2;
00318   };
00319 
00320   struct MD5;
00321   struct PackageInfo;
00322   interface IPackageInstaller;
00323   interface IPackageInstallerCallback;
00324   interface IPackageIterator;
00325 };