<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx</link><description>Resources for authoring 64-bit Windows Installer packages and merge modules.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#484390</link><pubDate>Tue, 25 Oct 2005 04:04:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:484390</guid><dc:creator>Norman Diamond</dc:creator><description>&amp;gt; To make sure that the file system and&lt;br&gt;&amp;gt; registry aren't reflected when installing&lt;br&gt;&amp;gt; 64-bit executables,&lt;br&gt;&lt;br&gt;Obvious Lee's spill chequer past &amp;quot;reflected&amp;quot; widow terror.  But I think you meant &amp;quot;deflected&amp;quot;?  We want the directories and registry to reflect the actual configuration instead of being deflected to 32-bit targets.&lt;br&gt;&lt;br&gt;(I've finally ordered parts for a 64-bit machine and will build it some weekend soon, but when will I finally have time to experiment with software on it, sigh.  Dilbert was spot on today, talking about unpaid overtime.)</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#484438</link><pubDate>Tue, 25 Oct 2005 05:53:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:484438</guid><dc:creator>Heath Stewart</dc:creator><description>No, registry reflection is for a shared view of the registry as documented at &lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/library/en-us/win64/win64/registry_reflection.asp"&gt;http://msdn.microsoft.com/library/en-us/win64/win64/registry_reflection.asp&lt;/a&gt;. That should've read &amp;quot;redirected&amp;quot; which is documented for the registry at &lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/library/en-us/win64/win64/registry_redirector.asp"&gt;http://msdn.microsoft.com/library/en-us/win64/win64/registry_redirector.asp&lt;/a&gt; and for the file system at &lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/library/en-us/win64/win64/file_system_redirector.asp"&gt;http://msdn.microsoft.com/library/en-us/win64/win64/file_system_redirector.asp&lt;/a&gt;.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#521415</link><pubDate>Wed, 01 Feb 2006 05:42:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:521415</guid><dc:creator>Jonathan Captanis</dc:creator><description>Id just like to point out to anyone googling this, that 64-bit customs actions (in a 64-bit assembly) do not work in Visual Studio 2005 at the time of writing (V8.0.50727.42). The installation will fail to execute the action and you will receive a 

" System.BadImageFormatException: Attempted to load a 64-bit assembly on a 32-bit platform ... "

Now the reason for this is no matter what flags you set in VS, the msiexec.exe will always run in 32-bit mode. I have verified this with microsoft. It seems as though VS does not setup the msi configuration properly and always references the 32-bit framework. I have come across two work arounds for the problem.

#1
- Open the .msi in Orca.
- Double-Click [Binary Data] in the Data column for InstallUtil row
- In the 'Edit Binary Stream' dialog, choose Action 'Read binary from filename' and click the Browse button.  In the Open dialog, go to the following folder -  "C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727"
and select InstallUtilLib.dll.  Choose OK and the following dialog boxes.
- Save the .msi and test.

OR

#2
Use a VBscript as a custom action. In the VBSCript reference the C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\msiexec.exe and the DLL you want to execute as your custom action.

References:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;816169
http://support.microsoft.com/default.aspx?scid=kb;EN-US;870712

Hope this helps someone else!</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#521668</link><pubDate>Wed, 01 Feb 2006 10:19:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:521668</guid><dc:creator>Heath Stewart</dc:creator><description>Jonathan, even replacing the binary with the 64-bit equivalent will not be enough. You'll also need to set the Template summary property to include X64 (AMD64 also works but is deprecated). Without doing that even running the MSI on a 64-bit platform will install only as 32-bit. For any 64-bit component or custom action attributes to work you must either have X64 or Intel64 (for Itanium) specified in the Template summary property. But yes, you are correct that Visual Studio's Windows Installer project doesn't support 64-bit installations. For this and many other reasons I don't recommend using it for serious projects. Wix (http://wix.sourceforge.net) is a good project to use.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#522454</link><pubDate>Thu, 02 Feb 2006 00:02:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:522454</guid><dc:creator>Heath Stewart</dc:creator><description>See &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/heaths/archive/2006/02/01/522378.aspx"&gt;http://blogs.msdn.com/heaths/archive/2006/02/01/522378.aspx&lt;/a&gt; for more information about the problem and workaround that Jonathan describes.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#599672</link><pubDate>Wed, 17 May 2006 10:12:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:599672</guid><dc:creator>Pratheesh</dc:creator><description>&amp;gt;&amp;gt;To do this you must set the Template summary property to either Intel64 or x64; Intel, Intel64, and x64 are all mutually exclusive.&lt;br&gt;&lt;br&gt;&lt;br&gt;How can I do this using WIX?&lt;br&gt;&lt;br&gt;Thanks,&lt;br&gt;Pratheesh</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#601071</link><pubDate>Thu, 18 May 2006 18:50:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:601071</guid><dc:creator>Heath Stewart</dc:creator><description>Pratheesh, see the documentation for the Package element, specifically the Platforms attribute. Set that attribute to one of the tokens I mentioned, namely x64 (avoid using Intel64, as it is now deprecated but will likely be supported for quite some time at least), Intel, or Intel64.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#606602</link><pubDate>Thu, 25 May 2006 03:34:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:606602</guid><dc:creator>John Vottero</dc:creator><description>Are you sure about Intel64 being deprecated? &amp;nbsp;I thought that Intel64 was for Itanium? &amp;nbsp;Isn't it:&lt;br&gt;&lt;br&gt;Intel = 32 bit (IA32)&lt;br&gt;x64 = AMD64 and EMT64&lt;br&gt;Intel64 = Itanium (IA64)&lt;br&gt;</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#606645</link><pubDate>Thu, 25 May 2006 04:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:606645</guid><dc:creator>Heath Stewart</dc:creator><description>John, good catch. That was a mistype. I meant to type &amp;quot;AMD64&amp;quot; instead of &amp;quot;Intel64&amp;quot;, which I even go so far as to list past my parenthetical quip. Sorry about that.&lt;br&gt;&lt;br&gt;So, &amp;quot;AMD64&amp;quot; is deprecated and you should use &amp;quot;x64&amp;quot; instead in the Template summary property.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#643350</link><pubDate>Fri, 23 Jun 2006 01:14:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:643350</guid><dc:creator>Jay Marvin</dc:creator><description>Hi,&lt;br&gt;Using x64 in the Template Summary property doesn't seem to work for me per ICE80 and errors about the type in the Component table, but AMD64 does. &amp;nbsp;Also, using Orca 3.0.3790.371, the View-&amp;gt;Summary Information doesn't have x64 as a choice per Platform...&lt;br&gt;Do I need new versions of Orca or ICE80?&lt;br&gt;Thanks,&lt;br&gt;Jay</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#644752</link><pubDate>Fri, 23 Jun 2006 23:37:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:644752</guid><dc:creator>Heath Stewart</dc:creator><description>Jay, yes you do need the 3.1 version of Orca or newer and its corresponding .cub files for ICE80 to detect &amp;quot;x64&amp;quot; properly.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741558</link><pubDate>Tue, 05 Sep 2006 23:02:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741558</guid><dc:creator>Michael S. Kaplan</dc:creator><description>Ok, I know you are saying it is impossible, but couldn't I creatively use Wow64DisableWow64FsRedirection in a custom action to create a 32-bit install that could handle both x64 and x86 for a simple install of a single file in the system32 dir and a single file in the syswow64 dir?</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741684</link><pubDate>Wed, 06 Sep 2006 00:30:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741684</guid><dc:creator>Heath Stewart</dc:creator><description>Michael, custom actions of various types (like base type 1 custom actions) run out-of-process. Calling process-scoped functions like that won't do the actual install any good.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741738</link><pubDate>Wed, 06 Sep 2006 01:04:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741738</guid><dc:creator>Michael S. Kaplan</dc:creator><description>Well, what if I did the installation inside the custom action as well, then?&lt;br&gt;&lt;br&gt;It would violate a principle or two, but only because of the limitations imposed by the tools.... :-)</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741757</link><pubDate>Wed, 06 Sep 2006 01:13:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741757</guid><dc:creator>Heath Stewart</dc:creator><description>Michael, that would void any reason of using MSI in the first place. Custom actions are used by the install, not vice-versa. Even messing directly with feature and component states in CAs is dangerous and should be avoided.&lt;br&gt;&lt;br&gt;What is the nature of this single file, though? 32- and 64-bit executables should be in different components, and should be installed into the proper location. 32-bit files shouldn't be in syswow64 and vice versa for 64-bit files. What exactly are you trying to accomplish?</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741764</link><pubDate>Wed, 06 Sep 2006 01:21:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741764</guid><dc:creator>Michael S. Kaplan</dc:creator><description>I am looking at installing custom keyboard layouts, files whose WOW64 binaries are not identical to the x86 ones --- so it is not as simple as just having an x86 install and an x64 install.&lt;br&gt;&lt;br&gt;And the simple fact is that users don't want six different kinds of installers for a single file....</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741773</link><pubDate>Wed, 06 Sep 2006 01:29:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741773</guid><dc:creator>Heath Stewart</dc:creator><description>Michael, 64-bit properties for 32-bit packages are still defined on a 64-bit Windows platform. So, you could condition your components so that the true 32-bit component uses the condition &amp;quot;NOT VersionNT64&amp;quot;. The WOW64- and 64-bit component would be conditioned on &amp;quot;VersionNT64&amp;quot; and both targeted to the SystemFolder, which Windows Installer will redirect as necessary. Of course, if you have separate components for IA64 and x64 you should also use in the condition either Intel64 or x64 (the AMD64 property is deprecated).</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741796</link><pubDate>Wed, 06 Sep 2006 01:43:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741796</guid><dc:creator>Michael S. Kaplan</dc:creator><description>Ok, that is starting to make sense now....&lt;br&gt;&lt;br&gt;So how do I get to the true 64-bit system32 folder if I am a 32-bit package? Or do I really need two separatae installers?</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#741803</link><pubDate>Wed, 06 Sep 2006 01:50:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:741803</guid><dc:creator>Heath Stewart</dc:creator><description>Michael, bitwise OR 256 (msidbComponentAttributes64bit) in the 64-bit components' Attribute column in the Component table. Use the System64Folder for the true 64-bit components' target directory.</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#746524</link><pubDate>Fri, 08 Sep 2006 19:26:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:746524</guid><dc:creator>Michael S. Kaplan</dc:creator><description>Aha, perfect! This seems to work perfectly for all flavors (and all binaries within each flavor). Thanks!</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#841507</link><pubDate>Thu, 19 Oct 2006 03:01:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:841507</guid><dc:creator>jsingh</dc:creator><description>&lt;p&gt;I am trying to run a power shell script as a custom action. this works great on 32 bit machines but on a 64 bit machine the wrong power shell binaries are called, 32 bit binaries are called instead of the 64 bit. I have marked the custom action for Win64. will appreciate any pointers or help on this. &lt;/p&gt;</description></item><item><title>re: Windows Installer on 64-bit Platforms</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#844944</link><pubDate>Thu, 19 Oct 2006 19:55:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:844944</guid><dc:creator>Heath Stewart</dc:creator><description>&lt;p&gt;jsingh, unless your MSI is marked for 64-bit installation (Intel64 or x64), the server context runs in a 32-bit process (in WOW64). So, paths are translated accordingly to use the 32-bit binaries.&lt;/p&gt;
</description></item><item><title>Example WiX-based setup that can be used to build both 32-bit and 64-bit MSIs</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#4317656</link><pubDate>Fri, 10 Aug 2007 07:36:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4317656</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description>&lt;p&gt;I previously posted an example that allows you to build a WiX-based MSI that will install a Windows Vista&lt;/p&gt;
</description></item><item><title>Example WiX-based setup that can be used to build both 32-bit and 64-bit MSIs</title><link>http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx#4317759</link><pubDate>Fri, 10 Aug 2007 07:54:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4317759</guid><dc:creator>Noticias externas</dc:creator><description>&lt;p&gt;I previously posted an example that allows you to build a WiX-based MSI that will install a Windows Vista&lt;/p&gt;
</description></item></channel></rss>