<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joy of Setup</title>
	<atom:link href="http://www.joyofsetup.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joyofsetup.com</link>
	<description>Bob Arnson on setup and servicing with WiX and MSI</description>
	<lastBuildDate>Wed, 06 Feb 2013 04:08:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>L10N/M10N: Localization minimization</title>
		<link>http://www.joyofsetup.com/2013/02/06/l10nm10n-localization-minimization/</link>
		<comments>http://www.joyofsetup.com/2013/02/06/l10nm10n-localization-minimization/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 04:08:23 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=344</guid>
		<description><![CDATA[Localized strings in setup, especially setup UI, tend to be full of flowery and marketing-driven language. They&#8217;re distasteful to type once, much less many times. You might have tried to use preprocessor variables in your WiX localization strings, like this: &#60;String Id="ProductLongName"&#62;$(var.ProductShortName)(R) $(var.ProductMarketingVersion)&#60;/String&#62; Then you discover that your product is now named &#8220;$(var.ProductShortName)(R) $(var.ProductMarketingVersion).&#8221; The [...]]]></description>
				<content:encoded><![CDATA[<p>Localized strings in setup, especially setup UI, tend to be full of flowery and marketing-driven language. They&#8217;re distasteful to type once, much less many times. You might have tried to use preprocessor variables in your WiX localization strings, like this:</p>
<pre>&lt;String Id="ProductLongName"&gt;$(var.ProductShortName)(R) $(var.ProductMarketingVersion)&lt;/String&gt;</pre>
<p>Then you discover that your product is now named &#8220;$(var.ProductShortName)(R) $(var.ProductMarketingVersion).&#8221; The reason for that is simple, if not obvious: $(var) references are handled by the WiX preprocessor, which happens before compilation, as part of Candle.exe. Localization strings are handled at bind time by Light.exe. The compiler and preprocessor are nowhere to be found.</p>
<p>One solution is to simply repeat yourself. It makes for straightforward localization strings but it means that some changes have to be reflected in multiple localization strings. For example, version numbers frequently show up in multiple strings.</p>
<p>Luckily, it doesn&#8217;t have to come to that. Though not explicitly documented (quelle surprise!), localization strings can contain references to other localization strings. For example, the following strings are legal:</p>
<pre>&lt;String Id="ProductShortName"&gt;BobStudio&lt;/String&gt;
&lt;String Id="ProductMarketingVersion"&gt;2013 Update 2&lt;/String&gt;
&lt;String Id="ProductLongName"&gt;!(loc.ProductShortName)(R) !(loc.ProductMarketingVersion)&lt;/String&gt;</pre>
<p>When used in authoring:</p>
<pre>&lt;Product Name="!(loc.ProductLongName)" ...</pre>
<p>the resulting ProductName property is, exactly as you&#8217;d expect:</p>
<pre>BobStudio(R) 2013 Update 2</pre>
<p>The code in WiX responsible for this behavior is WixVariableResolver. As the name implies, it&#8217;s not limited to just localization variables, but also works for other bind-time variables. For example, you can also use the special !(bind) variables:</p>
<pre>&lt;String Id="ProductLongName"&gt;!(loc.ProductShortName)(R) !(loc.ProductMarketingVersion) [!(bind.fileVersion.App.exe)]&lt;/String&gt;</pre>
<p>yields</p>
<pre>BobStudio(R) 2013 Update 2 [3.7.1224.0]</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2013/02/06/l10nm10n-localization-minimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WiX v3.6 is released</title>
		<link>http://www.joyofsetup.com/2012/09/03/wix-v3-6-is-released/</link>
		<comments>http://www.joyofsetup.com/2012/09/03/wix-v3-6-is-released/#comments</comments>
		<pubDate>Tue, 04 Sep 2012 02:05:40 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=328</guid>
		<description><![CDATA[After just under two and a half years in development, WiX v3.6 has been released. Actually, it&#8217;s been in development for longer than that, counting work Fredrik, Rob, and I did in Burn before v3.6 began. And now it&#8217;s out for everyone. The Codeplex download page has the release notes I wrote to summarize the [...]]]></description>
				<content:encoded><![CDATA[<p>After just under two and a half years in development, <a href="http://robmensching.com/blog/posts/2012/9/3/WiX-v3.6-released">WiX v3.6 has been released</a>. Actually, it&#8217;s been in development for longer than that, counting work Fredrik, Rob, and I did in Burn before v3.6 began. And now it&#8217;s out for everyone.</p>
<p>The <a href="http://wix.codeplex.com/releases/view/93929">Codeplex download page</a> has the release notes I wrote to summarize the changes since WiX v3.5. I&#8217;ve <a href="http://www.joyofsetup.com/2011/01/21/tactical-directory-nukes/">blogged </a>about <a href="http://www.joyofsetup.com/2011/06/21/wix-and-cabinetry/">some </a>of the <a href="http://www.joyofsetup.com/2012/07/14/localizing-more-than-strings-in-wix-v3-6/">other </a>changes as they developed but even I was surprised at the number of changes and additions other than Burn. (Thanks to <a href="http://www.scootersoftware.com/moreinfo.php">Beyond Compare</a> for helping weed out insignificant diffs.)</p>
<p>According to the good ol&#8217; SourceForge bug tracker, <a href="https://sourceforge.net/tracker/?limit=100&amp;func=&amp;group_id=105970&amp;atid=642714&amp;assignee=&amp;status=&amp;category=&amp;artgroup=1118441&amp;keyword=&amp;submitter=&amp;artifact_id=0&amp;assignee=&amp;status=&amp;category=&amp;artgroup=1118441&amp;submitter=&amp;keyword=&amp;artifact_id=0&amp;submit=Filter&amp;mass_category=&amp;mass_priority=&amp;mass_resolution=&amp;mass_assignee=&amp;mass_artgroup=&amp;mass_status=&amp;mass_cannedresponse=&amp;_visit_cookie=65167690bb41e7cbac15fe34ec461c9e">688 bugs were opened and targeted for WiX v3.6</a>; of those, 493 were fixed. Though a few were postponed, WiX v3.7 has only 25 bugs at the moment.</p>
<p>I, for one, will take the rest of Labor Day off. Then tomorrow it&#8217;s back to WiX v3.7!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2012/09/03/wix-v3-6-is-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Localizing more than strings in WiX v3.6</title>
		<link>http://www.joyofsetup.com/2012/07/14/localizing-more-than-strings-in-wix-v3-6/</link>
		<comments>http://www.joyofsetup.com/2012/07/14/localizing-more-than-strings-in-wix-v3-6/#comments</comments>
		<pubDate>Sat, 14 Jul 2012 04:15:00 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[Burn]]></category>
		<category><![CDATA[WiX]]></category>
		<category><![CDATA[new feature]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=309</guid>
		<description><![CDATA[Localizing an MSI package—primarily the user interface but also bits like the product name, shortcut names, and other user-visible, localizable strings—has been pretty much unchanged since WiX v2.0: Localizable strings are specified in the appropriate attributes in your WiX authoring using !(loc.stringid) syntax. Strings are specified by id in per-language WixLocalization (.wxl) files. Light, the [...]]]></description>
				<content:encoded><![CDATA[<p>Localizing an MSI package—primarily the user interface but also bits like the product name, shortcut names, and other user-visible, localizable strings—has been pretty much unchanged since WiX v2.0:</p>
<ul>
<li>Localizable strings are specified in the appropriate attributes in your WiX authoring using <strong>!(loc.stringid)</strong> syntax.</li>
<li>Strings are specified by id in per-language WixLocalization (.wxl) files.</li>
<li>Light, the WiX linker, takes a list of cultures to use when resolving <strong>!(loc.stringid)</strong> in the authoring.</li>
</ul>
<p>As you can see, localization is all about the strings. However, strings can vary dramatically in length among languages. In the WixUI dialog library, controls were sized to handle string lengths for all the languages WixUI supported. Unfortunately, that resulted in some controls being far wider than necessary. The Install button, for example, is wider than the other buttons on the same dialogs. We hadn&#8217;t had to resize any controls in WixUI for a while—and then <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3288872&amp;group_id=105970&amp;atid=642714">a bug</a> said otherwise.</p>
<p>Rather than yet again resizing a control, WiX v3.6 gets a new feature so we never have to do that again. In WiX v3.6, the <a href="http://wix.sourceforge.net/manual-wix3/wixloc_xsd_wixlocalization.htm">WixLocalization schema </a>has been extended with a <a href="http://wix.sourceforge.net/manual-wix3/wixloc_xsd_ui.htm">UI child element</a> that lets the localization for a particular culture change the attributes of an individual control or an entire dialog. For example, <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3540305&amp;group_id=105970&amp;atid=642714">a later bug</a> indicated the need for another big button in WixUI_Advanced. The fix in the ru-RU localization file was easy:</p>
<pre>&lt;UI Dialog="AdvancedWelcomeEulaDlg" Control="Print" X="50" /&gt;
&lt;UI Dialog="AdvancedWelcomeEulaDlg" Control="Advanced" X="124" Width="85" /&gt;</pre>
<p>The first line moves the Print button to the left, to make room for a bigger Advanced button, which the second button supplies. The dialog and control attributes identify a particular control.</p>
<p>The WixLocalization UI element (unrelated to the <a href="http://wix.sourceforge.net/manual-wix3/wix_xsd_ui.htm">UI element in the WiX namespace</a>) lets you:</p>
<ul>
<li>Resize a control using the Height and Width attributes.</li>
<li>Move a control using the X and Y attributes.</li>
<li>Change the control&#8217;s localization-related attributes: LeftScroll, RightAligned, and RightToLeft.</li>
<li>Change the control&#8217;s text using the inner text of the UI element.</li>
</ul>
<p>You can also use the UI element on dialogs by omitting a Control attribute:</p>
<ul>
<li>Resize a dialog using the Height and Width attributes.</li>
<li>Change the dialog&#8217;s centering values using the X and Y attributes.</li>
<li>Change the dialog&#8217;s title using the inner text of the UI element.</li>
</ul>
<h2>Don&#8217;t forget native code</h2>
<p>Though localization files are most often used inside MSI packages using WixUI dialog sets, they&#8217;re also used extensively in the WixStandardBootstrapperApplication for Burn. And even if you use a managed bootstrapper application, you&#8217;re still using WixStandardBootstrapperApplication when the managed host needs to install .NET.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2012/07/14/localizing-more-than-strings-in-wix-v3-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WiX v3.6 RC is now available</title>
		<link>http://www.joyofsetup.com/2012/05/29/wix-v3-6-rc-is-now-available/</link>
		<comments>http://www.joyofsetup.com/2012/05/29/wix-v3-6-rc-is-now-available/#comments</comments>
		<pubDate>Tue, 29 May 2012 20:16:11 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=317</guid>
		<description><![CDATA[Rob has all the details. Hitting the release candidate milestone &#8212; as opposed to the practice run of RC0 &#8212; means that the functionality is complete and we&#8217;re now only fixing and otherwise triaging bugs. So now&#8217;s your chance to get fixes in before attention turns to WiX v3.7 and v4.0.]]></description>
				<content:encoded><![CDATA[<p><a href="http://robmensching.com/blog/posts/2012/5/28/WiX-v3.6-Release-Candidate-available">Rob has all the details.</a> Hitting the release candidate milestone &#8212; as opposed to the practice run of RC0 &#8212; means that the functionality is complete and we&#8217;re now only fixing and otherwise triaging bugs. So now&#8217;s your chance to get fixes in before attention turns to WiX v3.7 and v4.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2012/05/29/wix-v3-6-rc-is-now-available/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WiX v3.6 RC0 is now available</title>
		<link>http://www.joyofsetup.com/2012/04/03/wix-v3-6-rc0-is-now-available/</link>
		<comments>http://www.joyofsetup.com/2012/04/03/wix-v3-6-rc0-is-now-available/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 14:00:00 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=311</guid>
		<description><![CDATA[As Rob announces, the RC0 build of WiX v3.6 is now available. Though traditionally &#8220;release candidate&#8221; means that the build is one that&#8217;s potentially shippable, we know we&#8217;re not quite done yet. There are bugs we still intend to fix and the potential for more. That potential is the bugs you find and file, so [...]]]></description>
				<content:encoded><![CDATA[<p>As <a href="http://robmensching.com/blog/posts/2012/4/3/WiX-v3.6-Release-Candidate-Zero-available">Rob announces</a>, the RC0 build of WiX v3.6 is now available. Though traditionally &#8220;release candidate&#8221; means that the build is one that&#8217;s potentially shippable, we know we&#8217;re not quite done yet. There are <a href="https://sourceforge.net/tracker/?limit=100&amp;func=&amp;group_id=105970&amp;atid=642714&amp;assignee=&amp;status=1&amp;category=&amp;artgroup=866580&amp;keyword=&amp;submitter=&amp;artifact_id=&amp;assignee=&amp;status=1&amp;category=&amp;artgroup=1118441&amp;submitter=&amp;keyword=&amp;artifact_id=&amp;submit=Filter&amp;mass_category=&amp;mass_priority=&amp;mass_resolution=&amp;mass_assignee=&amp;mass_artgroup=&amp;mass_status=&amp;mass_cannedresponse=">bugs we still intend to fix</a> and the potential for more. That potential is the bugs you find and file, so <a href="http://wixtoolset.org/releases/v3.6/rc0">go download</a>, rebuild your packages and bundles, and make sure WiX v3.6 is the best release of WiX yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2012/04/03/wix-v3-6-rc0-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting shelf space in the Store</title>
		<link>http://www.joyofsetup.com/2012/02/01/getting-shelf-space-in-the-store/</link>
		<comments>http://www.joyofsetup.com/2012/02/01/getting-shelf-space-in-the-store/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 05:01:28 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[Etc]]></category>
		<category><![CDATA[Windows Installer]]></category>
		<category><![CDATA[best practices]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=304</guid>
		<description><![CDATA[Reading the Windows Store for developers blog recently, I was pleasantly surprised to see that desktop (i.e., non-Metro-style) apps would be allowed to show up in the Windows Store. Desktop apps won&#8217;t get the same treatment as Metro-style apps, of course; instead of being able to install apps right from the Windows Store, desktop apps [...]]]></description>
				<content:encoded><![CDATA[<p>Reading the <a href="http://blogs.msdn.com/b/windowsstore/archive/2012/01/20/designing-the-windows-store-user-experience.aspx">Windows Store for developers blog</a> recently, I was pleasantly surprised to see that desktop (i.e., non-Metro-style) apps would be allowed to show up in the Windows Store. Desktop apps won&#8217;t get the same treatment as Metro-style apps, of course; instead of being able to install apps right from the Windows Store, desktop apps will have a similar listing page with a link to the developer&#8217;s site to handle download.</p>
<p>Still, it&#8217;s better than nothing &#8212; the Windows Store is likely to have a lot of window shoppers looking to buy apps.</p>
<p>However, a hurdle to get an app listing page is that the app must pass &#8220;certification.&#8221; In the past, this was known as the Windows Logo program and had many pages of technical requirements. In <a href="http://msdn.microsoft.com/library/windows/desktop/hh749939">Windows 8, the list is much smaller</a> and less prescriptive. For example, the Logo program for previous versions required the use of MSI, then required MSI or ClickOnce; for Windows 8, there are no technology restrictions.</p>
<p>Some requirements that struck me as interesting:</p>
<blockquote><p>1.2 Your app must not take a dependency on the VB6 runtime</p></blockquote>
<p>VB6, IE6 &#8212; anything v6 must go away. <img src='http://www.joyofsetup.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p>5.1 Your app must properly implement a clean, reversible installation</p>
<p>If the installation fails, the app should be able to roll it back and restore the machine to its previous state.</p></blockquote>
<p>If Windows 8 certification is anything like previous versions&#8217;, it will involve automated test suites that will highlight rollback that&#8217;s less than perfect.</p>
<blockquote><p>5.4 Your app must never block silent install/uninstall</p></blockquote>
<p>So don&#8217;t throw UI from custom actions and don&#8217;t rely on being able to prompt the user (i.e., also don&#8217;t break requirement #5.1).</p>
<blockquote><p>6.1 All executable files (.exe, .dll, .ocx, .sys, .cpl, .drv, .scr) must be signed with an Authenticode certificate</p></blockquote>
<p>MSI packages aren&#8217;t mentioned. But if you ship a Burn bundle or other bootstrapper .exe, that&#8217;s going to require signing.</p>
<blockquote><p>10.1 Your app must be installed in the Program Files folder by default</p></blockquote>
<p>There&#8217;s nothing mentioned that would exempt per-user apps in general from this requirement, though you can always request exceptions. Given the emphasis Metro places on per-user, restricted apps, perhaps this requirement will be extended/relaxed for per-user desktop apps too.</p>
<blockquote><p>10.6 Your app must write user data at first run and not during the installation in “per-machine” installations</p></blockquote>
<p>Long-time readers of <a href="http://wix.sourceforge.net/mailinglists.html#wix-users">wix-users</a> will recognize this as advice given again and again. Good to see Windows catching on. <img src='http://www.joyofsetup.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p>10.7 Exceptions and Waivers</p>
<p>A waiver is required for apps that write to the global assembly cache (GAC) .NET apps should keep assembly dependencies private, and store it in the app directory unless sharing an assembly is explicitly required.</p></blockquote>
<p>I suspect it&#8217;s a response to the GAC getting used too often when it&#8217;s not needed or very useful. (See also Rico Mariani&#8217;s <a href="http://blogs.msdn.com/b/ricom/archive/2012/01/31/ngen-or-not-the-rules-haven-t-changed-very-much-since-2004.aspx">blog post on using NGen</a>, which falls into the same boat.) Still, I&#8217;m mildly surprised to see it a requirement.</p>
<blockquote><p>12.5 App running under the WoW64 emulator should not attempt to subvert or bypass Wow64 virtualization mechanisms</p></blockquote>
<p>This one&#8217;s interesting, depending how struct &#8220;subvert&#8221; turns out to be. For example, several WiX custom actions make fairly trivial &#8220;subversions&#8221; of WoW64 to avoid the need for both 32-bit and 64-bit custom actions just to write to the right version of Program Files.</p>
<p>All in all, there&#8217;s nothing terribly surprising in this set of requirements. A lot of them just codify what&#8217;s already known as best practice for Windows apps in the age of UAC. Of course, this is just the first version of the certification requirements and Windows 8 isn&#8217;t yet shipping; there&#8217;s plenty of time for Microsoft to add, drop, or change requirements. In the end, you get to decide whether the effort of certification is worth having a presence in the Windows Store. Remember the Metro-style app folks, who have no choice in the matter: The Windows Store is the only way they can ship.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2012/02/01/getting-shelf-space-in-the-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The new wixtoolset.org and weekly builds</title>
		<link>http://www.joyofsetup.com/2012/01/22/the-new-wixtoolset-org-and-weekly-builds/</link>
		<comments>http://www.joyofsetup.com/2012/01/22/the-new-wixtoolset-org-and-weekly-builds/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 20:53:06 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=297</guid>
		<description><![CDATA[wixtoolset.org is WiX&#8217;s new home. Eventually, everything can and will be hosted under one roof. For now, wixtoolset.org hosts news and weekly builds. (Mailing lists and bug and feature trackers remain on SourceForge and RTM builds remain on Codeplex.) Now that there&#8217;s a spot for weekly builds again, the hiatus that began with the release [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://wixtoolset.org/">wixtoolset.org</a> is WiX&#8217;s new home. Eventually, everything can and will be hosted under one roof. For now, <a href="http://wixtoolset.org/">wixtoolset.org</a> hosts news and weekly builds. (Mailing lists and bug and feature trackers remain on <a href="https://sourceforge.net/projects/wix/">SourceForge</a> and RTM builds remain on <a href="http://wix.codeplex.com/">Codeplex</a>.)</p>
<p>Now that there&#8217;s a spot for weekly builds again, the hiatus that began with the release of WiX v3.6 beta in October is done. <a href="http://wixtoolset.org/releases/v3.6.2520.0">WiX v3.6.2520.0 is available</a> and contains almost <a href="http://wix.codeplex.com/SourceControl/changeset/changes/cce9f3391024">three months of features and fixes</a>. One of the nicest new features is a much-improved bootstrapper application for the WiX bundle installer.</p>
<p><img class="size-full wp-image-298 alignnone" style="border: 0pt none;" title="wixba" src="http://www.joyofsetup.com/wp-content/uploads/2012/01/wixba.png" alt="The WiX bootstrapper application" width="400" height="400" /></p>
<p>Take a look, install, try it out, and <a href="https://sourceforge.net/tracker/?group_id=105970&amp;atid=642714">report bugs</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2012/01/22/the-new-wixtoolset-org-and-weekly-builds/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WiX v3.6 goes to beta</title>
		<link>http://www.joyofsetup.com/2011/10/24/wix-v3-6-goes-to-beta/</link>
		<comments>http://www.joyofsetup.com/2011/10/24/wix-v3-6-goes-to-beta/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 17:18:44 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=294</guid>
		<description><![CDATA[The beta release of WiX v3.6 is now available: Get the bits from the WiX site on Codeplex. Read Rob&#8217;s blog post that describes the Burn features in v3.6 and the other little fixes we&#8217;ve made. Download, use, report bugs, and let us know how it goes.]]></description>
				<content:encoded><![CDATA[<p><a href="http://wix.codeplex.com/releases/view/75656">The beta release of WiX v3.6 is now available: Get the bits from the WiX site on Codeplex.</a> <a href="http://robmensching.com/blog/posts/2011/10/24/WiX-v3.6-Beta-released">Read Rob&#8217;s blog post that describes the Burn features in v3.6 and the other little fixes we&#8217;ve made.</a> Download, use, <a href="https://sourceforge.net/tracker/?limit=100&amp;func=&amp;group_id=105970&amp;atid=642714&amp;assignee=&amp;status=1&amp;category=&amp;artgroup=866580&amp;keyword=&amp;submitter=&amp;artifact_id=&amp;assignee=&amp;status=1&amp;category=&amp;artgroup=1118441&amp;submitter=&amp;keyword=&amp;artifact_id=&amp;submit=Filter&amp;mass_category=&amp;mass_priority=&amp;mass_resolution=&amp;mass_assignee=&amp;mass_artgroup=&amp;mass_status=&amp;mass_cannedresponse=">report bugs</a>, and <a href="https://sourceforge.net/mailarchive/forum.php?forum_name=wix-users">let us know how it goes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2011/10/24/wix-v3-6-goes-to-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Same as it ever was</title>
		<link>http://www.joyofsetup.com/2011/09/15/same-as-it-ever-was/</link>
		<comments>http://www.joyofsetup.com/2011/09/15/same-as-it-ever-was/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 20:32:46 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[Windows Installer]]></category>
		<category><![CDATA[WiX]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=282</guid>
		<description><![CDATA[Microsoft&#8217;s BUILD conference is going on this week and it&#8217;s chock full of new information about Windows 8 (or whatever they end up calling it). The biggest news is the new Metro-style application, which includes the AppX package format for installing them. There are three primary buckets applications fall into in the brave new Windows [...]]]></description>
				<content:encoded><![CDATA[<p>Microsoft&#8217;s <a href="http://www.buildwindows.com/">BUILD conference</a> is going on this week and it&#8217;s chock full of new information about Windows 8 (or whatever they end up calling it). The biggest news is the new Metro-style application, which includes the AppX package format for installing them.</p>
<p>There are three primary buckets applications fall into in the brave new Windows 8 world:</p>
<ol>
<li>Metro-style</li>
<li>Windows 8 non-Metro-style</li>
<li>&#8220;Retro-style&#8221; (aka legacy, anything created before 2011)</li>
</ol>
<p>Metro-style apps get all the goodies Windows 8 offers, including AppX packaging I&#8217;ll blog about. As <a href="http://robmensching.com/blog/posts/2011/9/13/Setup-in-Windows-8-and-Visual-Studio">Rob describes</a>, deployment is a first-class citizen in Windows 8. Apps in the other two buckets have the exact same options they have in Windows 7. And by exact, I mean &#8220;really, almost exactly 100 percent.&#8221;</p>
<h2>No soup for you</h2>
<p>As is its wont, rather than fixing the weaknesses of its existing platform, Microsoft replaced it with an all-new platform with a different set of weaknesses. Naturally, Windows 8 still includes Windows Installer. But if you were hoping for some of the same deployment love for your non-Metro-style apps that the Windows team showered on Metro-style apps, I&#8217;m sorry to disappoint: For better or worse, Windows 8&#8242;s MSI is functionally identical to Windows 7&#8242;s MSI v5.0.</p>
<p>A quick spelunking in the Windows 8 SDK available to MSDN subscribers reveals mostly structual changes to the MSI header files. For example, the _WIN32_MSI macro is defined as &#8220;500&#8243; for both Windows 7 and Windows 8:</p>
<pre style="padding-left: 30px;">#if (_WIN32_WINNT &gt;= 0x0601 || (defined(NTDDI_VERSION) &amp;&amp; NTDDI_VERSION &gt;= NTDDI_WIN8))
 #define _WIN32_MSI   500
#elif (_WIN32_WINNT &gt;= 0x0601 || (defined(NTDDI_VERSION) &amp;&amp; NTDDI_VERSION &gt;= NTDDI_WIN7))
 #define _WIN32_MSI   500</pre>
<p style="padding-left: 30px;">The only addition is a new MSIARCHITECTUREFLAGS value in Msi.h:</p>
<pre style="padding-left: 30px;">typedef enum tagMSIARCHITECTUREFLAGS
{
 MSIARCHITECTUREFLAGS_X86   = 0x00000001L, // set if creating the script for i386 platform
 MSIARCHITECTUREFLAGS_IA64  = 0x00000002L, // set if creating the script for IA64 platform
 MSIARCHITECTUREFLAGS_AMD64 = 0x00000004L, // set if creating the script for AMD64 platform
 MSIARCHITECTUREFLAGS_ARM   = 0x00000008L //set if creating the script for ARM platform
}MSIARCHITECTUREFLAGS;</pre>
<p>and a new property name in MsiDefs.h:</p>
<pre style="padding-left: 30px;">#define IPROPNAME_ARM              TEXT("Arm")</pre>
<p>As we&#8217;ve known for a while that Windows 8 will support the ARM architecture, its presence isn&#8217;t too surprising.</p>
<p>There are no other new enumeration values. There are no new MSI API functions. While it&#8217;s possible there are, for example, new standard actions that wouldn&#8217;t have visible impact in the header files, I don&#8217;t find it too likely.</p>
<p>That yields two tiny bits of good news:</p>
<ol>
<li>Lack of visible interface changes probably means a lack of visible behavior changes. That likely means that your Retro-style installers will probably work without change, or at least as well as the classic Windows 8 desktop supports Retro-style apps.</li>
<li>WiX and Burn won&#8217;t need to do anything to support Windows 8. OK, that&#8217;s something only a few of us need to worry about&#8230;</li>
</ol>
<p>Coming up: More about Metro-style deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2011/09/15/same-as-it-ever-was/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WiX and cabinetry</title>
		<link>http://www.joyofsetup.com/2011/06/21/wix-and-cabinetry/</link>
		<comments>http://www.joyofsetup.com/2011/06/21/wix-and-cabinetry/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 20:34:18 +0000</pubDate>
		<dc:creator>Bob Arnson</dc:creator>
				<category><![CDATA[WiX]]></category>
		<category><![CDATA[wix36]]></category>

		<guid isPermaLink="false">http://www.joyofsetup.com/?p=276</guid>
		<description><![CDATA[WiX v3.6 is focused on bring the Burn chainer into everyone&#8217;s hands. (You might be surprised how many products are already built with it.) That said, other features have been introduced in v3.6 and some of them are surprisingly useful. This post is about two of the more useful features, both dealing with cabinets. Media [...]]]></description>
				<content:encoded><![CDATA[<p>WiX v3.6 is focused on bring the Burn chainer into everyone&#8217;s hands. (You might be surprised how many products are already built with it.) That said, other features have been introduced in v3.6 and some of them are surprisingly useful. This post is about two of the more useful features, both dealing with cabinets.</p>
<h1>Media templates</h1>
<p>There are advantages to having multiple cabinets for your MSI packages, from <a href="http://www.joyofsetup.com/2008/03/29/wix-performance-tip-use-multiple-cabinets/">build-time performance</a> to more reliable downloading. Unfortunately, up to WiX v3.5, WiX required you to explicitly identify a set of files to go into a second (or third or fourth or&#8230;) cabinet using the DiskId attribute on the Component, File, Directory, or DirectoryRef elements.</p>
<p>WiX v3.6&#8242;s <a href="http://wix.sourceforge.net/manual-wix3/wix_xsd_mediatemplate.htm">MediaTemplate element</a> automatically creates cabinets up to an optionally-specified size. Files are assigned to &#8220;fill&#8221; each cabinet.</p>
<p style="padding-left: 30px;">Note: MediaTemplate replaces the <a href="http://wix.sourceforge.net/manual-wix3/wix_xsd_media.htm">Media element</a>; having both in your authoring results in a link-time error. You can still manually author DiskId attributes but they&#8217;re ignored in favor of MediaTemplate&#8217;s automatic cabinet making.</p>
<p>The simplest use of MediaTemplate is an empty element that takes all the defaults:</p>
<blockquote>
<pre>&lt;MediaTemplate /&gt;</pre>
</blockquote>
<p>MediaTemplate will generate as many cabinets as necessary for all the files in your package, up to a maximum of 999 cabinets. (If you have more than that, good luck!) Each cabinet will:</p>
<ul>
<li>Be named Prod###.cab</li>
<li>Be external to the package (not embedded)</li>
<li>Store up to 200MB of files before compression</li>
</ul>
<p>MediaTemplate shares some of Media&#8217;s attributes, to cover the same functionality:</p>
<ul>
<li><strong>CompressionLevel </strong>specifies the compression level to use in each cabinet.</li>
<li><strong>DiskPrompt </strong>specifies the disk name and VolumeLabel the volume label, if you&#8217;re dealing with multi-disk installs.</li>
<li><strong>EmbedCab </strong>lets you embed the cabinets in the .msi package. The default is to keep the cabinets external.</li>
</ul>
<p>Attributes specific to MediaTemplate control how the cabinets are generated and filled:</p>
<ul>
<li><strong>CabinetTemplate </strong>names each cabinet. The default is &#8220;Prod{0}.cab&#8221; which yields cabinet names of Prod1.cab, Prod2.cab, and so forth. The &#8220;{0}&#8221; is replaced with cabinet numbers, from 1 to 999. MSI says that cabinets have to follow the rules for 8.3 short filenames, so you can have up to five whole characters to distinguish your cabinet names.</li>
<li><strong>MaximumUncompressedMediaSize</strong>, as its impressively-long name indicates, specifies the maximum size of the files in each cabinet, in megabytes. The default size is 200MB.MediaTemplate counts actual file sizes—without compression—as it adds files to cabinets. Doing so is more predictable than trying to add files to cabinets as part of the cabinet-creation process; WiX can&#8217;t accurately predict how much a particular file will take up once it&#8217;s compressed so adding a file to a cabinet might make it larger than the maximum size. Using the uncompressed file size means that compressed cabinets will generally be smaller than the maximum size. On the flip side, any individual files that are larger than the maximum size go into a single-file cabinet, so it&#8217;s possible that such cabinets will be larger than the maximum size.</li>
</ul>
<p>You can override MaximumUncompressedMediaSize by specifying the size in megabytes in the WIX_MUMS environment variable. You wouldn&#8217;t typically do so but using an environment variable makes it easy to tweak the cabinet size on a developer box, say to create more, smaller cabinets to take advantage of WiX&#8217;s multithreaded cabinet creation to speed up builds on a developer box with many cores.</p>
<h1>Overriding compression level</h1>
<p>Speaking of speeding up developer builds&#8230;Back in 2008, I added the <a href="http://www.joyofsetup.com/2008/01/28/new-wix-feature-defaultcompressionlevel/">default compression level feature</a> to let you specify compression level at the project level instead of just in WiX authoring. That feature let you change compression level without changing authoring but you still had to change your .wixproj or other build script.</p>
<p>Now in WiX v3.6, you can override the compression level by specifying the WIX_COMPRESSION_LEVEL environment variable with the same values you can specify in, for example, the MediaTemplate/@CompressionLevel attribute. WIX_COMPRESSION_LEVEL overrides the default compression level specified in .wixproj MSBuild projects and explicitly authored @CompressionLevel attribute values.</p>
<p>There&#8217;s one simple use case: WIX_COMPRESSION_LEVEL lets developers specify &#8220;none&#8221; or &#8220;low&#8221; compression to avoid pegging all their CPU cores doing &#8220;mszip&#8221; or &#8220;high&#8221; compression that they absolutely don&#8217;t care about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joyofsetup.com/2011/06/21/wix-and-cabinetry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.794 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-21 19:18:07 -->

<!-- Compression = gzip -->