Пример #1
0
        internal AssemblyCacheUninstallDisposition UninstallAssembly(string assemblyName, InstallReference reference)
        {
            AssemblyCacheUninstallDisposition disposition = AssemblyCacheUninstallDisposition.Uninstalled;

            if (reference != null && !InstallReferenceGuid.IsValidGuidScheme(reference.GuidScheme))
            {
                throw new ArgumentException("Invalid reference guid.", "reference");
            }
            IAssemblyCache ppAsmCache;
            int            errorCode = NativeMethods.CreateAssemblyCache(out ppAsmCache, 0);

            if (errorCode >= 0)
            {
                errorCode = ppAsmCache.UninstallAssembly(0, assemblyName, reference, out disposition);
            }
            if (errorCode < 0)
            {
                Marshal.ThrowExceptionForHR(errorCode);
            }
            if (disposition != AssemblyCacheUninstallDisposition.Uninstalled)
            {
                Trace.TraceWarning(string.Format("Could not uninstall assembly {0}: {1}", (object)assemblyName, (object)((object)disposition).ToString()));
            }
            return(disposition);
        }
Пример #2
0
        private void InstallAssembly(string assemblyPath, InstallReference reference, bool force)
        {
            if (reference != null && !InstallReferenceGuid.IsValidGuidScheme(reference.GuidScheme))
            {
                throw new ArgumentException("Invalid reference guid.", "reference");
            }
            AssemblyCommitFlags assemblyCommitFlags = force ? AssemblyCommitFlags.Force : AssemblyCommitFlags.Default;
            IAssemblyCache      ppAsmCache;
            int assemblyCache = NativeMethods.CreateAssemblyCache(out ppAsmCache, 0);

            Marshal.ThrowExceptionForHR(assemblyCache);
            if (assemblyCache < 0)
            {
                return;
            }
            Marshal.ThrowExceptionForHR(ppAsmCache.InstallAssembly((int)assemblyCommitFlags, assemblyPath, reference));
        }