<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Windows Installer PowerShell Extensions</title><link>http://www.codeplex.com/psmsi/Project/ProjectRss.aspx</link><description>Exposes Windows Installer functionality to PowerShell, providing means to query installed product and patch information and to query views on packages.</description><item><title>New Post: Feature Ideas</title><link>http://www.codeplex.com/psmsi/Thread/View.aspx?ThreadId=8191</link><description>&lt;div style="line-height: normal;"&gt;Hey,&lt;br&gt;
&lt;br&gt;
I'd love to see an uninstall feature, that takes wither an MSI file or a GUID as an argument, and uninstalls the package.&lt;br&gt;
&lt;/div&gt;</description><author>jsnielsen</author><pubDate>Tue, 02 Sep 2008 09:57:09 GMT</pubDate><guid isPermaLink="false">New Post: Feature Ideas 20080902095709A</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/psmsi/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Project Description
&lt;/h1&gt;Exposes Windows Installer functionality to PowerShell, providing means to query installed product and patch information and to query views on packages.
&lt;br /&gt;&lt;a href="http://www.microsoft.com/powershell" class="externalLink"&gt;PowerShell&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; is a powerful command shell that pipes objects, not just text. Because of this ability, you can string practically unrelated commands together in many different ways to work on different types of objects, all built on .NET.&lt;br /&gt; &lt;br /&gt;The Windows Installer extensions in this project expose cmdlets - akin to commands in a batch script - to query Windows Installer products, patches, and package databases.&lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;b&gt;RFC:&lt;/b&gt; I'm requesting comment on &lt;a href="http://www.codeplex.com/psmsi/Thread/View.aspx?ThreadId=32756"&gt;how navigation should work in a provider&lt;/a&gt;. This would allow mounting an MSI package and browsing the package as an item provider and even copy files out as though it was another file system.&lt;br /&gt;&lt;h3&gt;
Cmdlets
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Get-MSIFileHash&lt;/b&gt; get the file hash in a format compatible with installation packages.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIFileType&lt;/b&gt; determines what type of MSI file - if any - a file is, optionally adding a NoteProperty to an existing FileInfo item.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIProductInfo&lt;/b&gt; gets information for installed and advertised products.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIPatchInfo&lt;/b&gt; gets information for patches applied to products, whether superseded or obsolesced.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIRelatedProductInfo&lt;/b&gt; gets information for related products based on &lt;a href="http://msdn2.microsoft.com/en-us/aa372375.aspx" class="externalLink"&gt;UpgradeCode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSISource&lt;/b&gt; gets the source list for a product or patch.&lt;/li&gt;
&lt;/ul&gt;Several &lt;a href="http://www.codeplex.com/psmsi/Wiki/View.aspx?title=Formats&amp;amp;referringTitle=Home"&gt;formats&lt;/a&gt; are provided for many of the cmdlets.&lt;br /&gt;&lt;h3&gt;
Recommend
&lt;/h3&gt;If there are additional features you'd like to see, please discuss on the thread &lt;a href="http://www.codeplex.com/psmsi/Thread/View.aspx?ThreadId=8191"&gt;Feature Ideas&lt;/a&gt;, or file a new Feature request if you have some concrete ideas in the Issue Tracker.&lt;br /&gt;&lt;h1&gt;
Examples
&lt;/h1&gt;Types sent through the pipeline by these cmdlets are designed to work with standard cmdlets so you can string many cmdlets together. See &lt;a href="http://www.codeplex.com/psmsi/Wiki/View.aspx?title=Examples&amp;amp;referringTitle=Home"&gt;Examples&lt;/a&gt; for a few ideas of what you can do with Windows Installer PowerShell Extensions.&lt;br /&gt;
&lt;/div&gt;</description><author>heaths</author><pubDate>Fri, 01 Aug 2008 22:42:39 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080801104239P</guid></item><item><title>New Post: How should navigation work in an MSI provider?</title><link>http://www.codeplex.com/psmsi/Thread/View.aspx?ThreadId=32756</link><description>&lt;div style="line-height: normal;"&gt;How should navigation work in a provider when mounting MSIs? The main conflict is when different components install the same file name to the same target directory. This is allowed when the components' conditions are mutually exclusive, but the idea of the provider is to browse the MSI regardless of conditions. It would be nearly impossible to evaluate these conditions without running a portion of installation up to and including CostFinalize anyway (maybe I should, at least for all known standard and custom action type 51 and 35 CAs). So what I could do is when a name is specified actually output all file objects that match that name. Part of the key would actually be the component ID or GUID. IF a user wanted a single one, a provider-specific parameter to match the ID or GUID would be required. Any comments on that approach?
&lt;/div&gt;</description><author>heaths</author><pubDate>Fri, 01 Aug 2008 22:37:46 GMT</pubDate><guid isPermaLink="false">New Post: How should navigation work in an MSI provider? 20080801103746P</guid></item><item><title>Created Feature: Migrate to DTF</title><link>http://www.codeplex.com/psmsi/WorkItem/View.aspx?WorkItemId=7171</link><description>To support faster code development, move to DTF &amp;#40;now in WiX&amp;#41;. Be sure to define alias properties on objects to match what is available now despite slight variations in the classes like ProductInstallation and PatchInstallation in DTF.&lt;br /&gt;</description><author>heaths</author><pubDate>Fri, 01 Aug 2008 22:32:09 GMT</pubDate><guid isPermaLink="false">Created Feature: Migrate to DTF 20080801103209P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Conditioned the signing task to only execute when the files to sign have changed.</description><author>heaths</author><pubDate>Sun, 04 May 2008 15:37:08 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080504033708P</guid></item><item><title>UPDATED RELEASE: 1.0.30411.0 (Apr 11, 2008)</title><link>http://www.codeplex.com/psmsi/Release/ProjectReleases.aspx?ReleaseId=12488</link><description>The current list of cmdlets follows.&lt;br /&gt;&amp;#42; Get-MSIFileHash&lt;br /&gt;&amp;#42; Get-MSIFileType&lt;br /&gt;&amp;#42; Get-MSIPatchInfo&lt;br /&gt;&amp;#42; Get-MSIProductInfo&lt;br /&gt;&amp;#42; Get-MSIRelatedProductInfo&lt;br /&gt;&amp;#42; Get-MSISource&lt;br /&gt;The types and formats files are signed with a self-signed certiifcate to allow loading them even under more strict execution policies.&lt;br /&gt;&lt;br /&gt;Once installed, when you start PowerShell you must type &amp;#39;add-pssnapin psmsi&amp;#39; before using the Windows Installer PowerShell Extensions. Optionally, you may add this command to your &amp;#36;profile script to automatically load these extensions whenever you start PowerShell.&lt;br /&gt;&lt;br /&gt;&amp;#42;Updated&amp;#58;&amp;#42; updated the branding to use custom bitmaps for the installation package.</description><author></author><pubDate>Thu, 17 Apr 2008 09:37:10 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: 1.0.30411.0 (Apr 11, 2008) 20080417093710A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Added icon and replaced default WiX artwork with custom banner and dialog bitmaps.</description><author>heaths</author><pubDate>Thu, 17 Apr 2008 09:30:39 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080417093039A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Changed the warp and set guides for the upcoming icon.</description><author>heaths</author><pubDate>Wed, 16 Apr 2008 15:49:59 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080416034959P</guid></item><item><title>NEW POST: Changing versioning convention</title><link>http://www.codeplex.com/psmsi/Thread/View.aspx?ThreadId=25827</link><description>&lt;div class="wikidoc"&gt;
Because of this and my work on other work-related and personal projects, sticking a schedule hasn't been a primary goal. As such, I'm dropping use of release-driven words like &amp;quot;Alpha&amp;quot;, &amp;quot;Beta&amp;quot;, &amp;quot;Release Candidate&amp;quot;, etc., and am simply posting versions.&lt;br /&gt; &lt;br /&gt;In addition, because at one point I toyed with the idea of using a version like 1.0.* in the AssemblyVersionAttribute - which is admittedly lame - and that source was posted, I needed to update my version to 1.0.3&lt;i&gt;MMDD&lt;/i&gt;.&lt;i&gt;revision&lt;/i&gt; so that the file versions would be newer and Windows Installer would overwrite them correctly.&lt;br /&gt;
&lt;/div&gt;</description><author>heaths</author><pubDate>Sat, 12 Apr 2008 18:45:49 GMT</pubDate><guid isPermaLink="false">NEW POST: Changing versioning convention 20080412064549P</guid></item><item><title>CREATED RELEASE: 1.0.30411.0 (Apr 11, 2008)</title><link>http://www.codeplex.com/psmsi/Release/ProjectReleases.aspx?ReleaseId=12488</link><description>The current list of cmdlets follows.&lt;br /&gt;&amp;#42; Get-MSIFileHash&lt;br /&gt;&amp;#42; Get-MSIFileType&lt;br /&gt;&amp;#42; Get-MSIPatchInfo&lt;br /&gt;&amp;#42; Get-MSIProductInfo&lt;br /&gt;&amp;#42; Get-MSIRelatedProductInfo&lt;br /&gt;&amp;#42; Get-MSISource&lt;br /&gt;The types and formats files are signed with a self-signed certiifcate to allow loading them even under more strict execution policies.&lt;br /&gt;&lt;br /&gt;Once installed, when you start PowerShell you must type &amp;#39;add-pssnapin psmsi&amp;#39; before using the Windows Installer PowerShell Extensions. Optionally, you may add this command to your &amp;#36;profile script to automatically load these extensions whenever you start PowerShell.</description><author></author><pubDate>Fri, 11 Apr 2008 21:34:04 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: 1.0.30411.0 (Apr 11, 2008) 20080411093404P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Checking in 60 functional and unit tests at 90.90&amp;#37; code coverage.</description><author>heaths</author><pubDate>Fri, 11 Apr 2008 10:35:19 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080411103519A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Added additional information for ARP.</description><author>heaths</author><pubDate>Fri, 04 Apr 2008 09:55:52 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080404095552A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Solution files needed updating to work in VS.</description><author>heaths</author><pubDate>Thu, 20 Mar 2008 09:24:50 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080320092450A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Custom Import was causing problems at load time, and the solution wouldn&amp;#39;t build on the command line.</description><author>heaths</author><pubDate>Thu, 20 Mar 2008 09:16:52 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080320091652A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Reorganized the directory structure to account for dependent projects.</description><author>heaths</author><pubDate>Thu, 20 Mar 2008 08:29:12 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080320082912A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Work in progress&amp;#59; saving to server.</description><author>heaths</author><pubDate>Thu, 20 Mar 2008 08:24:52 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080320082452A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>Fixed bug that was preventing latest v2 bits from halting after debug prompts.</description><author>heaths</author><pubDate>Tue, 18 Mar 2008 22:16:12 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080318101612P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/psmsi/SourceControl/ListDownloadableCommits.aspx</link><description>LocalPackage column wasn&amp;#39;t long enough.</description><author>heaths</author><pubDate>Tue, 18 Mar 2008 19:33:35 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080318073335P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/psmsi/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Project Description
&lt;/h1&gt;Exposes Windows Installer functionality to PowerShell, providing means to query installed product and patch information and to query views on packages.
&lt;br /&gt;&lt;a href="http://www.microsoft.com/powershell" class="externalLink"&gt;PowerShell&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; is a powerful command shell that pipes objects, not just text. Because of this ability, you can string practically unrelated commands together in many different ways to work on different types of objects, all built on .NET.&lt;br /&gt; &lt;br /&gt;The Windows Installer extensions in this project expose cmdlets - akin to commands in a batch script - to query Windows Installer products, patches, and package databases.&lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;h3&gt;
Cmdlets
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Get-MSIFileHash&lt;/b&gt; get the file hash in a format compatible with installation packages.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIFileType&lt;/b&gt; determines what type of MSI file - if any - a file is, optionally adding a NoteProperty to an existing FileInfo item.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIProductInfo&lt;/b&gt; gets information for installed and advertised products.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIPatchInfo&lt;/b&gt; gets information for patches applied to products, whether superseded or obsolesced.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSIRelatedProductInfo&lt;/b&gt; gets information for related products based on &lt;a href="http://msdn2.microsoft.com/en-us/aa372375.aspx" class="externalLink"&gt;UpgradeCode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get-MSISource&lt;/b&gt; gets the source list for a product or patch.&lt;/li&gt;
&lt;/ul&gt;Several &lt;a href="http://www.codeplex.com/psmsi/Wiki/View.aspx?title=Formats&amp;amp;referringTitle=Home"&gt;formats&lt;/a&gt; are provided for many of the cmdlets.&lt;br /&gt;&lt;h3&gt;
Recommend
&lt;/h3&gt;If there are additional features you'd like to see, please discuss on the thread &lt;a href="http://www.codeplex.com/psmsi/Thread/View.aspx?ThreadId=8191"&gt;Feature Ideas&lt;/a&gt;, or file a new Feature request if you have some concrete ideas in the Issue Tracker.&lt;br /&gt;&lt;h1&gt;
Examples
&lt;/h1&gt;Types sent through the pipeline by these cmdlets are designed to work with standard cmdlets so you can string many cmdlets together. See &lt;a href="http://www.codeplex.com/psmsi/Wiki/View.aspx?title=Examples&amp;amp;referringTitle=Home"&gt;Examples&lt;/a&gt; for a few ideas of what you can do with Windows Installer PowerShell Extensions.&lt;br /&gt;
&lt;/div&gt;</description><author>heaths</author><pubDate>Tue, 18 Mar 2008 18:07:39 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080318060739P</guid></item><item><title>CREATED FEATURE: Select records from an MSI or MSP database</title><link>http://www.codeplex.com/psmsi/WorkItem/View.aspx?WorkItemId=5779</link><description>Implement a cmdlet &amp;#40;select-record&amp;#63;&amp;#41; to select records - either by a SQL expression or for a whole table with a scriptblock for a filter - from either an MSI or MSP database. Another way might be to write a single cmdlet for performing queries and updates to a database.&lt;br /&gt;</description><author>heaths</author><pubDate>Tue, 18 Mar 2008 18:06:56 GMT</pubDate><guid isPermaLink="false">CREATED FEATURE: Select records from an MSI or MSP database 20080318060656P</guid></item></channel></rss>