SHOW:
|
|
- or go back to the newest paste.
1 | using System; | |
2 | using System.Collections.Generic; | |
3 | using System.Linq; | |
4 | using System.Text; | |
5 | using System.Threading; | |
6 | using Microsoft.Deployment.WindowsInstaller; | |
7 | using Microsoft.Deployment.WindowsInstaller.Linq; | |
8 | using Microsoft.Deployment.WindowsInstaller.Linq.Entities; | |
9 | using Microsoft.Deployment.WindowsInstaller.Package; | |
10 | ||
11 | namespace MSI_Mgmt | |
12 | { | |
13 | class Program | |
14 | { | |
15 | static void Main(string[] args) | |
16 | { | |
17 | Installer.SetInternalUI(InstallUIOptions.Silent); | |
18 | Console.WriteLine("List Installed Applications\n"); | |
19 | IOrderedEnumerable<ProductInstallation> ap = ProductInstallation.AllProducts.OrderBy(pi => pi.Publisher) | |
20 | .ThenBy(pi => pi.ProductName) | |
21 | .ThenBy(pi => pi.Features.Where(f => f.FeatureName == "ProductFeature").Select(f => f.FeatureName).SingleOrDefault()) | |
22 | .ThenBy(pi => pi.ProductVersion); | |
23 | foreach (ProductInstallation pi in ap.ToArray()) | |
24 | - | if (pi.Publisher == "Microsoft Corporation") continue; |
24 | + | |
25 | //break; | |
26 | /*if (pi.Publisher == "Microsoft Corporation") continue; | |
27 | if (pi.Publisher == "Microsoft Corporations") continue; | |
28 | if (pi.Publisher == "Microsoft") continue; | |
29 | if (pi.Publisher == "Microsoft Garage") continue; | |
30 | if (pi.Publisher == ".NET Foundation") continue; | |
31 | if (pi.Publisher == "Adobe Systems Incorporated") continue; | |
32 | if (pi.Publisher == "Adobe Systems, Inc") continue; | |
33 | if (pi.Publisher == "Apple Inc.") continue; | |
34 | if (pi.Publisher == "CyberLink Corp.") continue; | |
35 | if (pi.Publisher == "Dell Products, LP") continue; | |
36 | if (pi.Publisher == "Dell") continue; | |
37 | if (pi.Publisher == "Dell Inc.") continue; | |
38 | if (pi.Publisher == "Intel") continue; | |
39 | if (pi.Publisher == "INTEL") continue; | |
40 | if (pi.Publisher == "Intel Corporation") continue; | |
41 | if (pi.Publisher == "Google") continue; | |
42 | if (pi.Publisher == "Google Inc") continue; | |
43 | if (pi.Publisher == "Google LLC") continue; | |
44 | if (pi.Publisher == "Google, Inc.") continue; | |
45 | if (pi.Publisher == "Oracle Corporation") continue; | |
46 | if (pi.Publisher == "Plex") continue; | |
47 | if (pi.Publisher == "Plex, Inc.") continue; | |
48 | if (pi.Publisher == "Python Software Foundation") continue; | |
49 | if (pi.Publisher == "MariaDB Corporation Ab") continue; | |
50 | if (pi.Publisher == "The Document Foundation") continue; | |
51 | - | if (pi.Publisher == "pdfforge GmbH") continue; |
51 | + | |
52 | - | if (String.IsNullOrEmpty(pi.Publisher) && String.IsNullOrEmpty(pi.ProductName) && pi.ProductVersion == null) continue; |
52 | + | |
53 | if (pi.Publisher == "pdfforge GmbH") continue;//*/ | |
54 | //if (String.IsNullOrEmpty(pi.Publisher) && String.IsNullOrEmpty(pi.ProductName) && pi.ProductVersion == null) continue; | |
55 | foreach(FeatureInstallation fi in pi.Features) { | |
56 | Console.WriteLine("{0} = {1} - ({2})", fi.FeatureName, fi.State.ToString(), fi.Usage.UseCount); | |
57 | } | |
58 | //break; | |
59 | Session s = null; | |
60 | String p = pi.LocalPackage; | |
61 | String f = ""; | |
62 | String u = ""; | |
63 | if (pi.LocalPackage != null && pi.LocalPackage.Length>0) | |
64 | - | s = Installer.OpenPackage(pi.LocalPackage, true); |
64 | + | |
65 | try | |
66 | { | |
67 | s = Installer.OpenPackage(p, true); | |
68 | - | String p = pi.LocalPackage.ToLower().Replace("c:\\windows\\installer\\", "D:\\Installer-Backup\\"); |
68 | + | |
69 | catch(InstallerException e) | |
70 | { | |
71 | p = pi.LocalPackage.ToLower().Replace("c:\\windows\\installer\\", "D:\\Installer-Backup\\"); | |
72 | s = Installer.OpenPackage(p, true); | |
73 | } | |
74 | - | f = s.Features.Where(fs => fs.Name == "ProductFeature").Single().Title; |
74 | + | |
75 | f = s.Features.Where(fs => fs.Name == "ProductFeature").Select(fs => fs.Title).SingleOrDefault(); | |
76 | - | catch(Exception e) |
76 | + | |
77 | { | |
78 | - | f = ""; |
78 | + | |
79 | } | |
80 | s.Close(); | |
81 | } | |
82 | try | |
83 | { | |
84 | if(String.IsNullOrEmpty(f)) f = pi.Features.Where(fs => fs.FeatureName == "ProductFeature").Single().GetHashCode().ToString(); | |
85 | } | |
86 | catch(Exception e) | |
87 | { | |
88 | f = ""; | |
89 | } | |
90 | Console.WriteLine("{0} - {1} - {2} - {3} - {4} ({5})", pi.Publisher, pi.ProductName, f, pi.AdvertisedLanguage, pi.ProductVersion, pi.IsInstalled); | |
91 | Console.WriteLine("{0} {1} {2}", pi.ProductCode, pi.AdvertisedPackageCode, u); | |
92 | Console.WriteLine("{0}", p); | |
93 | Console.ReadLine(); | |
94 | Console.WriteLine(); | |
95 | } | |
96 | ||
97 | Console.WriteLine("List Installed Patches\n"); | |
98 | ||
99 | foreach (PatchInstallation pi in PatchInstallation.AllPatches) | |
100 | { | |
101 | Console.WriteLine("{0} - {1} - {2} - {3} - {4} -- {5} - {6}", pi.LocalPackage, pi.ProductCode, pi.PatchCode, pi.DisplayName, pi.IsInstalled, | |
102 | pi.SourceList.PackageName, pi.SourceList.LastUsedSource); | |
103 | //pi.SourceList.MediaPackagePath, ""); | |
104 | //String.Join("@", pi.SourceList.MediaList.Select(md => md.VolumeLabel).ToArray()) | |
105 | Console.WriteLine(); | |
106 | } | |
107 | ||
108 | ||
109 | //Thread.Sleep(10000); | |
110 | Console.ReadLine(); | |
111 | } | |
112 | } | |
113 | } |