windows-nt/Source/XPSP1/NT/base/win32/fusion/installer/includes/assemblydownload.h
2020-09-26 16:20:57 +08:00

69 lines
1.6 KiB
C++

#pragma once
class CDownloadDlg;
class CAssemblyDownload : public IAssemblyDownload
{
public:
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID riid,void ** ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IBackgroundCopyCallback methods
STDMETHOD(JobTransferred)(
/* in */ IBackgroundCopyJob *pJob);
STDMETHOD(JobError)(
/* in */ IBackgroundCopyJob* pJob,
/* in */ IBackgroundCopyError* pError);
STDMETHOD(JobModification)(
/* in */ IBackgroundCopyJob* pJob,
/* in */ DWORD dwReserved);
// IAssemblyDownload methods
STDMETHOD(DownloadManifestAndDependencies)(
/* in */ LPWSTR wzApplicationManifestUrl, HANDLE hNamedEvent, DWORD dwFlags);
CAssemblyDownload();
~CAssemblyDownload();
private:
HRESULT Init();
HRESULT DoCacheUpdate(IBackgroundCopyJob *pJob);
HRESULT EnqueueDependencies(LPASSEMBLY_CACHE_IMPORT
pCacheImport, CString &sCodebase, CString &sDisplayName, IBackgroundCopyJob **ppJob);
HRESULT GetPatchDisplayNameFromFilePath ( CString &sPatchFilePath, CString &sDisplayName);
HRESULT ApplyPatchFile (LPASSEMBLY_IDENTITY pPatchAssemblyId, LPWSTR pwzFilePath);
DWORD _dwSig;
LONG _cRef;
HRESULT _hr;
CString _sDisplayName;
IAssemblyCacheEmit *_pRootEmit;
HANDLE _hNamedEvent;
CDownloadDlg *_pDlg;
static IBackgroundCopyManager *g_pManager;
friend CDownloadDlg;
};