using System; using System.Runtime.InteropServices; using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME; namespace VisualStudioMock { /// /// Information about an instance of a product. /// /// /// You can enumerate all properties of basic types by casting to an . /// [ComImport] [Guid("B41463C3-8866-43B5-BC33-2B0676F7F42E")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [TypeIdentifier] [ComVisible(true)] public interface ISetupInstance { /// /// Gets the instance identifier (should match the name of the parent instance directory). /// /// The instance identifier. [return: MarshalAs(UnmanagedType.BStr)] string GetInstanceId(); /// /// Gets the local date and time when the installation was originally installed. /// [return: MarshalAs(UnmanagedType.Struct)] System.Runtime.InteropServices.ComTypes.FILETIME GetInstallDate(); /// /// Gets the unique name of the installation, often indicating the branch and other information used for telemetry. /// [return: MarshalAs(UnmanagedType.BStr)] string GetInstallationName(); /// /// Gets the path to the installation root of the product. /// [return: MarshalAs(UnmanagedType.BStr)] string GetInstallationPath(); /// /// Gets the version of the product installed in this instance. /// [return: MarshalAs(UnmanagedType.BStr)] string GetInstallationVersion(); /// /// Gets the display name (title) of the product installed in this instance. /// /// The LCID for the display name. [return: MarshalAs(UnmanagedType.BStr)] string GetDisplayName([In][MarshalAs(UnmanagedType.U4)] int lcid = 0); /// /// Gets the description of the product installed in this instance. /// /// The LCID for the description. [return: MarshalAs(UnmanagedType.BStr)] string GetDescription([In][MarshalAs(UnmanagedType.U4)] int lcid = 0); /// /// Resolves the optional relative path to the root path of the instance. /// /// A relative path within the instance to resolve, or NULL to get the root path. /// The full path to the optional relative path within the instance. If the relative path is NULL, the root path will always terminate in a backslash. [return: MarshalAs(UnmanagedType.BStr)] string ResolvePath([In][MarshalAs(UnmanagedType.LPWStr)] string pwszRelativePath = null); } }