Ejemplo n.º 1
0
        /// <summary>
        /// Extacts the patch metadata as XML.
        /// </summary>
        /// <param name="path">Path to patch.</param>
        /// <returns>String XML.</returns>
        public static string ExtractPatchXml(string path)
        {
            var buffer = new StringBuilder(65535);
            var size   = buffer.Capacity;

            var error = MsiInterop.MsiExtractPatchXMLData(path, 0, buffer, ref size);

            if (234 == error)
            {
                buffer.EnsureCapacity(++size);
                error = MsiInterop.MsiExtractPatchXMLData(path, 0, buffer, ref size);
            }

            if (error != 0)
            {
                throw new MsiException(error);
            }

            return(buffer.ToString());
        }