2020-09-30 16:53:55 +02:00

629 lines
19 KiB
Plaintext

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992-2001.
//
// File: fusenet.idl
//
// Contents: Fusion Installer Interfaces
//
// Classes:
//
// Functions:
//
//
//----------------------------------------------------------------------------
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// fusenet.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1995-2001 Microsoft Corporation. All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("//---------------------------------------------------------------------------=")
cpp_quote("// Fusenet Interfaces.")
cpp_quote("")
import "objidl.idl";
import "oleidl.idl";
//import "bgcopy.idl";
import "bits.idl";
cpp_quote("class CDebugLog;")
interface IAssemblyIdentity;
interface IAssemblyManifestImport;
interface IAssemblyCacheImport;
interface IAssemblyCacheEmit;
interface IAssemblyDownload;
cpp_quote("#include <fusion.h>")
cpp_quote("EXTERN_C const IID IID_IAssemblyIdentity;")
cpp_quote("EXTERN_C const IID IID_IAssemblyManifestImport;")
cpp_quote("EXTERN_C const IID IID_IAssemblyManifestEmit;")
cpp_quote("EXTERN_C const IID IID_IAssemblyCacheImport;")
cpp_quote("EXTERN_C const IID IID_IAssemblyCacheEmit;")
cpp_quote("EXTERN_C const IID IID_IAssemblyCacheEnum;")
cpp_quote("EXTERN_C const IID IID_IAssemblyDownload;")
cpp_quote("EXTERN_C const IID IID_IManifestInfo;")
cpp_quote("EXTERN_C const IID IID_IManifestData;")
cpp_quote("EXTERN_C const IID IID_IPatchingInfo;")
cpp_quote("#define DEVMODE // define devMode - devSync")
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyIdentity
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(aaa1257d-a56c-4383-9b4a-c868eda7ca42),
pointer_default(unique)
]
interface IAssemblyIdentity: IUnknown
{
typedef [unique] IAssemblyIdentity *LPASSEMBLY_IDENTITY;
typedef enum
{
ASMID_DISPLAYNAME_NOMANGLING= 0,
ASMID_DISPLAYNAME_WILDCARDED,
ASMID_DISPLAYNAME_MAX
} ASMID_DISPLAYNAME_FLAGS;
HRESULT SetAttribute(
[in] LPCOLESTR pwzName,
[in] LPCOLESTR pwzValue,
[in] DWORD ccValue);
HRESULT GetAttribute(
[in] LPCOLESTR pwzName,
[out] LPOLESTR *ppwzValue,
[out] LPDWORD pccValue);
HRESULT GetDisplayName(
[in] DWORD dwFlags,
[out] LPOLESTR *ppwzDisplayName,
[out] LPDWORD pccDisplayName);
HRESULT GetCLRDisplayName(
[in] DWORD dwFlags,
[out] LPOLESTR *ppwzDisplayName,
[out] LPDWORD pccDisplayName);
HRESULT IsEqual(
[in] IAssemblyIdentity *pAssemblyId);
}
///////////////////////////////////////////////////////////////////////////////
//
// IManifestInfo
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(b9309cc3-e522-4d58-b5c7-dee5b1763114),
pointer_default(unique)
]
interface IManifestInfo: IUnknown
{
typedef [unique] IManifestInfo *LPMANIFEST_INFO;
enum
{
MAN_INFO_ASM_FILE_NAME=0,
MAN_INFO_ASM_FILE_HASH,
MAN_INFO_ASM_FILE_SIZE,
MAN_INFO_ASM_FILE_MAX
};
enum
{
MAN_INFO_APPLICATION_FRIENDLYNAME=0,
MAN_INFO_APPLICATION_ENTRYPOINT,
MAN_INFO_APPLICATION_ENTRYIMAGETYPE,
MAN_INFO_APPLICATION_ICONFILE,
MAN_INFO_APPLICATION_ICONINDEX,
MAN_INFO_APPLICATION_SHOWCOMMAND,
MAN_INFO_APPLICATION_HOTKEY,
MAN_INFO_APPLICATION_ASSEMBLYNAME,
MAN_INFO_APPLICATION_ASSEMBLYCLASS,
MAN_INFO_APPLICATION_ASSEMBLYMETHOD,
MAN_INFO_APPLICATION_ASSEMBLYARGS,
MAN_INFO_APPLICATION_MAX
};
enum
{
MAN_INFO_SUBSCRIPTION_SYNCHRONIZE_INTERVAL=0,
MAN_INFO_SUBSCRIPTION_INTERVAL_UNIT,
MAN_INFO_SUBSCRIPTION_SYNCHRONIZE_EVENT,
MAN_INFO_SUBSCRIPTION_EVENT_DEMAND_CONNECTION,
MAN_INFO_SUBSCRIPTION_MAX
};
enum
{
MAN_INFO_DEPENDENT_ASM_CODEBASE=0,
MAN_INFO_DEPENDENT_ASM_TYPE,
MAN_INFO_DEPENDENT_ASM_ID,
MAN_INFO_DEPENDANT_ASM_MAX
};
enum
{
MAN_INFO_SOURCE_ASM_ID=0,
MAN_INFO_SOURCE_ASM_PATCH_UTIL,
MAN_INFO_SOURCE_ASM_DIR,
MAN_INFO_SOURCE_ASM_INSTALL_DIR,
MAN_INFO_SOURCE_ASM_TEMP_DIR,
MAN_INFO_SOURCE_ASM_MAX
};
enum
{
MAN_INFO_PATCH_INFO_SOURCE=0,
MAN_INFO_PATCH_INFO_TARGET,
MAN_INFO_PATCH_INFO_PATCH,
MAN_INFO_PATCH_INFO_MAX
};
typedef enum
{
MAN_INFO_FILE=0,
MAN_INFO_APPLICATION,
MAN_INFO_SUBSCRIPTION,
MAN_INFO_DEPENDTANT_ASM,
MAN_INFO_SOURCE_ASM,
MAN_INFO_PATCH_INFO,
MAN_INFO_MAX
} MAN_INFO;
typedef enum
{
MAN_INFO_FLAG_UNDEF=0,
MAN_INFO_FLAG_IUNKNOWN_PTR,
MAN_INFO_FLAG_LPWSTR,
MAN_INFO_FLAG_DWORD,
MAN_INFO_FLAG_ENUM,
MAN_INFO_FLAG_BOOL,
MAN_INFO_FLAG_MAX
} MAN_INFO_FLAGS;
enum {MAX_MAN_INFO_PROPERTIES=MAN_INFO_APPLICATION_MAX};
HRESULT Set(
[in] DWORD PropertyId,
[in] LPVOID pvProperty,
[in] DWORD cbProperty,
[in] DWORD type);
HRESULT Get(
[in] DWORD dwPropertyId,
[out] LPVOID *pvProperty,
[out] DWORD *pcbProperty,
[out] DWORD *pType);
HRESULT IsEqual(
[in] IManifestInfo *pManifestInfo);
HRESULT GetType(
[out] DWORD *pdwType);
}
///////////////////////////////////////////////////////////////////////////////
//
// IManifestData
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(8a423759-b438-4fdd-92cd-e09fed4830ef),
pointer_default(unique)
]
interface IManifestData: IUnknown
{
typedef [unique] IManifestData *LPMANIFEST_DATA;
typedef enum
{
MAN_DATA_TYPE_UNDEF=0,
MAN_DATA_TYPE_LPWSTR,
MAN_DATA_TYPE_DWORD,
MAN_DATA_TYPE_ENUM,
MAN_DATA_TYPE_BOOL,
MAN_DATA_TYPE_IUNKNOWN_PTR,
MAN_DATA_TYPE_MAX
} MAN_DATA_TYPES;
HRESULT Set(
[in] LPCWSTR pwzPropertyId,
[in] LPVOID pvProperty,
[in] DWORD cbProperty,
[in] DWORD dwType);
HRESULT Get(
[in] LPCWSTR pwzPropertyId,
[out] LPVOID *ppvProperty,
[out] DWORD *pcbProperty,
[out] DWORD *pdwType);
HRESULT GetType(
[out] LPWSTR *ppwzType);
}
///////////////////////////////////////////////////////////////////////////////
//
// IPatchingUtil
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(e460c1ba-e601-48e4-a926-fea8033ab199),
pointer_default(unique)
]
interface IPatchingUtil: IUnknown
{
typedef [unique] IPatchingUtil *LPPATCHING_INTERFACE;
HRESULT MatchTarget(
[in] LPWSTR pwzTarget,
[out] IManifestInfo **ppPatchInfo);
HRESULT MatchPatch(
[in] LPWSTR pwzPatch,
[out] IManifestInfo **ppPatchInfo);
}
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyManifestImport
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(696fb37f-da64-4175-94e7-fdc8234539c4),
pointer_default(unique)
]
interface IAssemblyManifestImport: IUnknown
{
typedef [unique] IAssemblyManifestImport *LPASSEMBLY_MANIFEST_IMPORT;
typedef enum
{
MANIFEST_TYPE_UNKNOWN= 0,
MANIFEST_TYPE_DESKTOP,
MANIFEST_TYPE_SUBSCRIPTION,
MANIFEST_TYPE_APPLICATION,
MANIFEST_TYPE_COMPONENT,
MANIFEST_TYPE_CONTAINER,
MANIFEST_TYPE_MAX
} MANIFEST_TYPE;
// dependent asm info enum
typedef enum
{
DEPENDENT_ASM_INSTALL_TYPE_NORMAL= 0, //default
DEPENDENT_ASM_INSTALL_TYPE_REQUIRED,
DEPENDENT_ASM_INSTALL_TYPE_DEVSYNC,
DEPENDENT_ASM_INSTALL_TYPE_MAX
} DEPENDENT_ASM_INSTALL_TYPE;
// subscription info enums
typedef enum
{
SUBSCRIPTION_INTERVAL_UNIT_HOURS= 0, //default
SUBSCRIPTION_INTERVAL_UNIT_MINUTES,
SUBSCRIPTION_INTERVAL_UNIT_DAYS,
SUBSCRIPTION_INTERVAL_UNIT_MAX
} SUBSCRIPTION_INTERVAL_UNIT;
typedef enum
{
SUBSCRIPTION_SYNC_EVENT_NONE= 0, //default
SUBSCRIPTION_SYNC_EVENT_ON_APP_STARTUP,
SUBSCRIPTION_SYNC_EVENT_MAX
} SUBSCRIPTION_SYNC_EVENT;
HRESULT GetAssemblyIdentity(
[out] IAssemblyIdentity **ppAssemblyId);
HRESULT GetManifestApplicationInfo(
[out] IManifestInfo **ppAppInfo);
HRESULT GetSubscriptionInfo(
[out] IManifestInfo **ppSubsInfo);
HRESULT GetNextPlatform(
[in] DWORD nIndex,
[out] IManifestData **ppPlatformInfo);
HRESULT GetNextFile(
[in] DWORD nIndex,
[out] IManifestInfo **ppAssemblyFile);
HRESULT QueryFile(
[in] LPCOLESTR pwzFileName,
[out] IManifestInfo **ppAssemblyFile);
HRESULT GetNextAssembly(
[in] DWORD nIndex,
[out] IManifestInfo**ppDependAsm);
HRESULT ReportManifestType(
[out] DWORD *pdwType);
}
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyManifestEmit
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(f022ef5f-61dc-489b-b321-4d6f2b910890),
pointer_default(unique)
]
interface IAssemblyManifestEmit: IUnknown
{
typedef [unique] IAssemblyManifestEmit *LPASSEMBLY_MANIFEST_EMIT;
HRESULT ImportManifestInfo(
[in] LPASSEMBLY_MANIFEST_IMPORT pManImport);
HRESULT SetDependencySubscription(
[in] LPASSEMBLY_MANIFEST_IMPORT pManImport,
[in] LPWSTR pwzManifestUrl);
HRESULT Commit();
}
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyCacheImport
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(c920b164-33e0-4c61-b595-eca4cdb04f12),
pointer_default(unique)
]
interface IAssemblyCacheImport: IUnknown
{
typedef [unique] IAssemblyCacheImport *LPASSEMBLY_CACHE_IMPORT;
typedef enum
{
CACHEIMP_CREATE_NULL= 0,
CACHEIMP_CREATE_RETRIEVE,
CACHEIMP_CREATE_RETRIEVE_MAX,
CACHEIMP_CREATE_RESOLVE_REF,
CACHEIMP_CREATE_RESOLVE_REF_EX,
CACHEIMP_CREATE_MAX,
} CACHEIMP_CREATE_FLAGS;
HRESULT GetManifestImport(
[out] IAssemblyManifestImport **ppManifestImport);
HRESULT GetManifestFilePath(
[out] LPOLESTR *ppwzFilePath,
[in, out] LPDWORD pccFilePath);
HRESULT GetManifestFileDir(
[out] LPOLESTR *ppwzFileDir,
[in, out] LPDWORD pccFileDir);
HRESULT GetAssemblyIdentity(
[out] IAssemblyIdentity **ppAssemblyId);
HRESULT GetDisplayName(
[out] LPOLESTR *ppwzDisplayName,
[in, out] LPDWORD pccDisplayName);
HRESULT FindExistMatching(
[in] IManifestInfo *pAssemblyFileInfo,
[out] LPOLESTR *ppwzPath);
}
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyCacheEmit
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(83d6b9ac-eff9-45a3-8361-7c41df1f9f85),
pointer_default(unique)
]
interface IAssemblyCacheEmit: IUnknown
{
typedef [unique] IAssemblyCacheEmit *LPASSEMBLY_CACHE_EMIT;
HRESULT GetManifestImport(
[out] IAssemblyManifestImport **ppManifestImport);
HRESULT GetManifestFilePath(
[out] LPOLESTR *ppwzFilePath,
[in, out] LPDWORD pccFilePath);
HRESULT GetManifestFileDir(
[out] LPOLESTR *ppwzFilePath,
[in, out] LPDWORD pccFilePath);
HRESULT GetDisplayName(
[out] LPOLESTR *ppwzDisplayName,
[in, out] LPDWORD pccDisplayName);
HRESULT GetAssemblyIdentity(
[out] IAssemblyIdentity **ppAssemblyId);
HRESULT CopyFile(
[in] LPOLESTR pwzSourceFilePath,
[in] LPOLESTR pwzFileName,
[in] DWORD dwFlags);
HRESULT Commit(
[in] DWORD dwFlags);
}
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyCacheEnum
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(48a5b677-f800-494f-b19b-795d30699385),
pointer_default(unique)
]
interface IAssemblyCacheEnum: IUnknown
{
typedef [unique] IAssemblyCacheEnum *LPASSEMBLY_CACHE_ENUM;
typedef enum
{
CACHEENUM_RETRIEVE_ALL= 0,
CACHEENUM_RETRIEVE_VISIBLE,
CACHEENUM_RETRIEVE_MAX,
} CACHEENUM_RETRIEVE_FLAGS;
HRESULT GetNext(
[out] IAssemblyCacheImport** ppAsmCache);
HRESULT Reset();
HRESULT GetCount(
[out] LPDWORD pdwCount);
}
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyBindSink
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(af0bc960-0b9a-11d3-95ca-00a024a85b51),
pointer_default(unique)
]
interface IAssemblyBindSink : IUnknown
{
typedef [unique] IAssemblyBindSink *LPASSEMBLY_BIND_SINK;
typedef enum
{
ASM_NOTIFICATION_START,
ASM_NOTIFICATION_PROGRESS,
ASM_NOTIFICATION_ABORT,
ASM_NOTIFICATION_ERROR,
ASM_NOTIFICATION_SUBSCRIPTION_MANIFEST,
ASM_NOTIFICATION_APPLICATION_MANIFEST,
ASM_NOTIFICATION_DONE
} ASM_NOTIFICATION;
HRESULT OnProgress(
[in] DWORD dwNotification,
[in] HRESULT hrNotification,
[in] LPCWSTR szNotification,
[in] DWORD dwProgress,
[in] DWORD dwProgressMax,
[in] IUnknown *pUnk);
}
cpp_quote("#ifdef DEVMODE")
cpp_quote("#define DOWNLOAD_DEVMODE 0x10")
cpp_quote("#endif")
///////////////////////////////////////////////////////////////////////////////
//
// IAssemblyDownload
//
///////////////////////////////////////////////////////////////////////////////
[
local,
object,
uuid(8a249b36-6132-4238-8871-a267029382a8),
pointer_default(unique)
]
interface IAssemblyDownload: IBackgroundCopyCallback
{
typedef [unique] IAssemblyDownload *LPASSEMBLY_DOWNLOAD;
typedef enum
{
DOWNLOAD_FLAGS_NO_NOTIFICATION = 0x0,
DOWNLOAD_FLAGS_PROGRESS_UI = 0x1,
DOWNLOAD_FLAGS_NOTIFY_BINDSINK =0x2
} ASM_DOWNLOAD;
HRESULT DownloadManifestAndDependencies(
[in] LPWSTR pwzApplicationManifestUrl,
[in] IAssemblyBindSink *pBindSink,
[in] DWORD dwFlags);
HRESULT CancelDownload();
}
///////////////////////////////////////////////////////////////////////////////
//
// Platform detection APIs
//
///////////////////////////////////////////////////////////////////////////////
typedef struct
{
LPWSTR pwzName;
LPWSTR pwzURL;
} TPLATFORM_INFO;
typedef TPLATFORM_INFO* LPTPLATFORM_INFO;
#pragma midl_echo("STDAPI CheckPlatformRequirements(LPASSEMBLY_MANIFEST_IMPORT pManifestImport, LPDWORD pdwNumMissingPlatforms, LPTPLATFORM_INFO* pptPlatform);")
#pragma midl_echo("STDAPI CheckPlatformRequirementsEx(LPASSEMBLY_MANIFEST_IMPORT pManifestImport, CDebugLog* pDbgLog, LPDWORD pdwNumMissingPlatforms, LPTPLATFORM_INFO* pptPlatform);")
#pragma midl_echo("STDAPI CreateFusionAssemblyCacheEx (IAssemblyCache **ppFusionAsmCache);")
#pragma midl_echo("STDAPI CreateAssemblyIdentity(LPASSEMBLY_IDENTITY *ppAssemblyId, DWORD dwFlags);")
#pragma midl_echo("STDAPI CreateAssemblyIdentityEx(LPASSEMBLY_IDENTITY *ppAssemblyId, DWORD dwFlags, LPWSTR wzDisplayName);")
#pragma midl_echo("STDAPI CloneAssemblyIdentity(LPASSEMBLY_IDENTITY pSrcAssemblyId, LPASSEMBLY_IDENTITY *ppDestAssemblyId);")
#pragma midl_echo("STDAPI CreateAssemblyManifestImport(LPASSEMBLY_MANIFEST_IMPORT *ppAssemblyManifestImport, LPCOLESTR szPath, CDebugLog *pDbgLog, DWORD dwFlags);")
#pragma midl_echo("STDAPI CreateAssemblyManifestImportFromXMLStream(LPASSEMBLY_MANIFEST_IMPORT *ppAssemblyManifestImport, IStream* piStream, CDebugLog * pDbgLog, DWORD dwFlags);")
#pragma midl_echo("STDAPI CreateAssemblyManifestEmit(LPASSEMBLY_MANIFEST_EMIT* ppEmit, LPCOLESTR pwzManifestFilePath, MANIFEST_TYPE eType);")
#pragma midl_echo("STDAPI CreateAssemblyCacheImport(LPASSEMBLY_CACHE_IMPORT *ppAssemblyCacheImport, LPASSEMBLY_IDENTITY pAssemblyIdentity, DWORD dwFlags);")
#pragma midl_echo("STDAPI CreateAssemblyCacheEmit(LPASSEMBLY_CACHE_EMIT *ppAssemblyCacheEmit, LPASSEMBLY_CACHE_EMIT pAssemblyCacheEmit, DWORD dwFlags);")
#pragma midl_echo("STDAPI CreateAssemblyDownload(IAssemblyDownload** ppDownload, CDebugLog *pDbgLog, DWORD dwFlags); ")
#pragma midl_echo("STDAPI CreateManifestInfo(DWORD dwId, LPMANIFEST_INFO* ppManifestInfo);")
#pragma midl_echo("STDAPI CreateManifestData(LPCWSTR pwzDataType, LPMANIFEST_DATA* ppManifestData);")
#pragma midl_echo("STDAPI CreateAssemblyCacheEnum( LPASSEMBLY_CACHE_ENUM *ppAssemblyCacheEnum, LPASSEMBLY_IDENTITY pAssemblyIdentity, DWORD dwFlags);")