<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How do I install a Windows Installer Patch?</title>
	<atom:link href="http://www.msigeek.com/350/windows-installer-patches/feed" rel="self" type="application/rss+xml" />
	<link>http://www.msigeek.com/350/windows-installer-patches</link>
	<description>Microsoft Guides, Windows Blog and Tech Tips</description>
	<lastBuildDate>Tue, 07 Feb 2012 16:43:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Did you know these Windows Installer File Types?</title>
		<link>http://www.msigeek.com/350/windows-installer-patches/comment-page-1#comment-626</link>
		<dc:creator>Did you know these Windows Installer File Types?</dc:creator>
		<pubDate>Fri, 04 Dec 2009 07:00:57 +0000</pubDate>
		<guid isPermaLink="false">http://174.36.239.128/~msigeek/windows-installer-patches/#comment-626</guid>
		<description>[...] .MSP -&gt; .MSP is a Windows Installer Patch file used to distribute small updates of .MSIs.To know more on Patches refer this article [...]</description>
		<content:encoded><![CDATA[<p>[...] .MSP -&gt; .MSP is a Windows Installer Patch file used to distribute small updates of .MSIs.To know more on Patches refer this article [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: msigeek</title>
		<link>http://www.msigeek.com/350/windows-installer-patches/comment-page-1#comment-589</link>
		<dc:creator>msigeek</dc:creator>
		<pubDate>Wed, 11 Nov 2009 14:18:05 +0000</pubDate>
		<guid isPermaLink="false">http://174.36.239.128/~msigeek/windows-installer-patches/#comment-589</guid>
		<description>This is what Saascha replied in WiX discussion Thread (replacing one single file)&lt;br&gt;&lt;br&gt;Assuming you don&#039;t mind having an external CAB file, it&#039;s not too hard... here&#039;s a (simplified) script that I&#039;m using to permit end-users to customize a configuration file prior to deployment. The example code modifies the MSI (which is fine for testing), however our production code creates a copy, modifies it, generates an MST against the original and finally removes the copy.&lt;br&gt;&lt;br&gt;This code doesn&#039;t actually &quot;replace&quot; the original file, but adds a second copy which gets installed instead.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Const MSI_SOURCE = &quot;application.msi&quot;&lt;br&gt;Const FILE_REPLACE = &quot;config.xml&quot;&lt;br&gt;&lt;br&gt;Dim filesys, installer, database, view&lt;br&gt;Dim objFile, size, result, objCab&lt;br&gt;&lt;br&gt;Set filesys=CreateObject(&quot;Scripting.FileSystemObject&quot;)&lt;br&gt;Set installer = CreateObject(&quot;WindowsInstaller.Installer&quot;)&lt;br&gt;Set database = installer.OpenDatabase (MSI_SOURCE, 1)&lt;br&gt;&lt;br&gt;Set objFile = filesys.GetFile(FILE_REPLACE) size = objFile.Size&lt;br&gt;&lt;br&gt;objCab.CreateCab &quot;config.cab&quot;, False, False, False objCab.AddFile FILE_REPLACE, filesys.GetFileName(FILE_REPLACE) objCab.CloseCab&lt;br&gt;&lt;br&gt;Set view = database.OpenView (&quot;SELECT LastSequence FROM Media WHERE DiskId = 1&quot;) view.Execute&lt;br&gt;&lt;br&gt;Set result = view.Fetch&lt;br&gt;seq = result.StringData(1) + 1 &#039; Sequence for new configuration file&lt;br&gt;&lt;br&gt;Set view = database.OpenView (&quot;INSERT INTO Media (DiskId, LastSequence, Cabinet) VALUES (&#039;2&#039;, &#039;&quot; &amp; seq &amp; &quot;&#039;, &#039;config.cab&#039;)&quot;) view.Execute&lt;br&gt;&lt;br&gt;Set view = database.OpenView (&quot;UPDATE File SET FileSize = &quot; &amp; size &amp; &quot;, Sequence = &quot; &amp; seq &amp; &quot; WHERE File = &#039;&quot; &amp; LCase(FILE_REPLACE) &amp; &quot;&#039;&quot;) view.Execute</description>
		<content:encoded><![CDATA[<p>This is what Saascha replied in WiX discussion Thread (replacing one single file)</p>
<p>Assuming you don&#39;t mind having an external CAB file, it&#39;s not too hard&#8230; here&#39;s a (simplified) script that I&#39;m using to permit end-users to customize a configuration file prior to deployment. The example code modifies the MSI (which is fine for testing), however our production code creates a copy, modifies it, generates an MST against the original and finally removes the copy.</p>
<p>This code doesn&#39;t actually &#8220;replace&#8221; the original file, but adds a second copy which gets installed instead.</p>
<p>Const MSI_SOURCE = &#8220;application.msi&#8221;<br />Const FILE_REPLACE = &#8220;config.xml&#8221;</p>
<p>Dim filesys, installer, database, view<br />Dim objFile, size, result, objCab</p>
<p>Set filesys=CreateObject(&#8220;Scripting.FileSystemObject&#8221;)<br />Set installer = CreateObject(&#8220;WindowsInstaller.Installer&#8221;)<br />Set database = installer.OpenDatabase (MSI_SOURCE, 1)</p>
<p>Set objFile = filesys.GetFile(FILE_REPLACE) size = objFile.Size</p>
<p>objCab.CreateCab &#8220;config.cab&#8221;, False, False, False objCab.AddFile FILE_REPLACE, filesys.GetFileName(FILE_REPLACE) objCab.CloseCab</p>
<p>Set view = database.OpenView (&#8220;SELECT LastSequence FROM Media WHERE DiskId = 1&#8243;) view.Execute</p>
<p>Set result = view.Fetch<br />seq = result.StringData(1) + 1 &#39; Sequence for new configuration file</p>
<p>Set view = database.OpenView (&#8220;INSERT INTO Media (DiskId, LastSequence, Cabinet) VALUES (&#39;2&#39;, &#39;&#8221; &#038; seq &#038; &#8220;&#39;, &#39;config.cab&#39;)&#8221;) view.Execute</p>
<p>Set view = database.OpenView (&#8220;UPDATE File SET FileSize = &#8221; &#038; size &#038; &#8220;, Sequence = &#8221; &#038; seq &#038; &#8221; WHERE File = &#39;&#8221; &#038; LCase(FILE_REPLACE) &#038; &#8220;&#39;&#8221;) view.Execute</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: msigeek</title>
		<link>http://www.msigeek.com/350/windows-installer-patches/comment-page-1#comment-588</link>
		<dc:creator>msigeek</dc:creator>
		<pubDate>Wed, 11 Nov 2009 14:16:51 +0000</pubDate>
		<guid isPermaLink="false">http://174.36.239.128/~msigeek/windows-installer-patches/#comment-588</guid>
		<description>This is what Kim replied in WiX discussion Thread&lt;br&gt;&lt;br&gt;&quot;This is possible using msidb which is part of the Windows Installer Development Tools.&lt;br&gt;&lt;br&gt;I think you will need to do the following:&lt;br&gt;- extract cab file using &quot;msidb -x&quot;&lt;br&gt;- replace the file in the cabinet&lt;br&gt;- delete the cab file from the msi using &quot;msidb -k&quot;&lt;br&gt;- add the changed cabinet back using &quot;msidb -a&quot;&lt;br&gt;&lt;br&gt;If you do not know the name of the stream you can use a tool like InstEdit to find out.&quot;</description>
		<content:encoded><![CDATA[<p>This is what Kim replied in WiX discussion Thread</p>
<p>&#8220;This is possible using msidb which is part of the Windows Installer Development Tools.</p>
<p>I think you will need to do the following:<br />- extract cab file using &#8220;msidb -x&#8221;<br />- replace the file in the cabinet<br />- delete the cab file from the msi using &#8220;msidb -k&#8221;<br />- add the changed cabinet back using &#8220;msidb -a&#8221;</p>
<p>If you do not know the name of the stream you can use a tool like InstEdit to find out.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: msigeek</title>
		<link>http://www.msigeek.com/350/windows-installer-patches/comment-page-1#comment-585</link>
		<dc:creator>msigeek</dc:creator>
		<pubDate>Wed, 11 Nov 2009 04:17:33 +0000</pubDate>
		<guid isPermaLink="false">http://174.36.239.128/~msigeek/windows-installer-patches/#comment-585</guid>
		<description>To replace a single File, you can also use msifiler.exe&lt;br&gt;(&lt;a href=&quot;http://blogs.msdn.com/windows_installer_team/archive/2005/08/10/451482.aspx&quot; rel=&quot;nofollow&quot;&gt;http://blogs.msdn.com/windows_installer_team/ar...&lt;/a&gt;&lt;br&gt;). Be sure to change the &quot;PackageGuid&quot; as well (msiinfo.exe -v {NEW-GUID} where NEW-GUID is a new guid that is all CAPS. See &lt;a href=&quot;http://msdn.microsoft.com/library/aa370310.aspx&quot; rel=&quot;nofollow&quot;&gt;http://msdn.microsoft.com/library/aa370310.aspx&lt;/a&gt; and &lt;a href=&quot;http://msdn.microsoft.com/library/aa371255.aspx&quot; rel=&quot;nofollow&quot;&gt;http://msdn.microsoft.com/library/aa371255.aspx&lt;/a&gt; for that tool).</description>
		<content:encoded><![CDATA[<p>To replace a single File, you can also use msifiler.exe<br />(<a href="http://blogs.msdn.com/windows_installer_team/archive/2005/08/10/451482.aspx" rel="nofollow">http://blogs.msdn.com/windows_installer_team/ar&#8230;</a><br />). Be sure to change the &#8220;PackageGuid&#8221; as well (msiinfo.exe -v {NEW-GUID} where NEW-GUID is a new guid that is all CAPS. See <a href="http://msdn.microsoft.com/library/aa370310.aspx" rel="nofollow">http://msdn.microsoft.com/library/aa370310.aspx</a> and <a href="http://msdn.microsoft.com/library/aa371255.aspx" rel="nofollow">http://msdn.microsoft.com/library/aa371255.aspx</a> for that tool).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

