{"id":3143,"date":"2005-06-07T18:53:00","date_gmt":"2005-06-07T18:53:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/heaths\/2005\/06\/07\/how-to-fix-administrative-deployment-for-64-bit-net-framework-redistributables\/"},"modified":"2018-09-06T06:02:42","modified_gmt":"2018-09-06T06:02:42","slug":"how-to-fix-administrative-deployment-for-64-bit-net-framework-redistributables","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/setup\/how-to-fix-administrative-deployment-for-64-bit-net-framework-redistributables\/","title":{"rendered":"How to Fix Administrative Deployment for 64-bit .NET Framework Redistributables"},"content":{"rendered":"<p>If you&#8217;ve tried to install the .NET Framework 2.0 Beta 2 redistributable for either <a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyId=83A93864-6CD5-4BC7-AAC9-A3B31254983D\">ia64<\/a> or <a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyId=DE4539CF-5D5C-4981-B27B-8AE747A7EA98\">x64<\/a> from an administrative installation point, you might&#8217;ve seen an error like the following:<\/p>\n<p><img decoding=\"async\" alt=\"mscoree load error\" src=\"\"><\/p>\n<p>While <a href=\"http:\/\/blogs.msdn.com\/heaths\/archive\/2005\/02\/17\/375816.aspx\">investigating<\/a> patching scenarios for 64-bit SKUs I found that for source extraction and administrative installs the 32- and 64-bit files map to the same paths. This, unfortunately, shipped in beta 2. The problem this causes is that a 64-bit call to <code>LoadLibrary<\/code> will fail to load a 32-bit DLL such as <i>mscoree.dll<\/i>. Only the 64-bit libraries <i>wow64.dll<\/i>, <i>wow64win.dll<\/i>, <i>wow64cpu.dll<\/i>, and <i>ntdll.dll<\/i> can be loaded into a 32-bit process, so the error dialog above or a similar error is displayed. You might also find the following log lines in your log file:<\/p>\n<p><font face=\"Courier New\">06\/07\/05 14:00:40 DDSet_Status: LANGID: 1033<br \/>06\/07\/05 14:00:40 DDSet_Entry: InstallAssembly started<br \/>06\/07\/05 14:00:40 DDSet_Status: CustomActionData: C:WINDOWSMicrosoft.NETFrameworkv2.0.50215Microsoft.VisualBasic.Vsa.dll;28672<br \/>06\/07\/05 14:00:40 DDSet_Status: Loading mscoree.dll<br \/>06\/07\/05 14:00:40 DDSet_Error: Error occurred while initializing fusion. Unable to load mscoree.dll. System error: %1 is not a valid Win32 application.<\/p>\n<p>MSI (c) (14:14) [14:00:40:822]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg<\/p>\n<p>Error 25002.Error occurred while initializing fusion. Unable to load mscoree.dll. System error: %1 is not a valid Win32 application.<\/p>\n<p>MSI (s) (70!40) [14:00:57:087]: Product: Microsoft .NET Framework 2.0 Beta 2 (x64) &#8212; Error 25002.Error occurred while initializing fusion. Unable to load mscoree.dll. System error: %1 is not a valid Win32 application.<\/p>\n<p>06\/07\/05 14:00:57 DDSet_CARetVal: 25002<br \/>06\/07\/05 14:00:57 DDSet_Exit: InstallAssembly ended with return value 1603<br \/>Action ended 14:00:57: InstallFinalize. Return value 3.<\/font><\/p>\n<p>The problem is that when extracting source files as we do for our patch build system, or creating an <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/administrative_installation.asp\">administrative installation<\/a> no custom actions are run. Many custom actions are used to set directory paths for components that are provided by merge modules (MSMs), which is the majority of files. Since the 32-bit files must be installed to support 32-bit applications, the x86 mondo MSM is consumed which uses the same source and destination directory names.<\/p>\n<p>To enable administrative deployment for beta 2, you must either modify the MSI or create a transform, which I recommend. This gives you flexibility without changing the target MSI.<\/p>\n<p>There are several ways of creating transforms, from programming against the <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/windows_installer_reference.asp\">Windows Installer APIs<\/a> or using the <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/automation_interface.asp\">object model<\/a> to using Orca from the Windows Installer SDK, part of the <a href=\"http:\/\/msdn.microsoft.com\/platformsdk\">Platform SDK<\/a>. To install Orca &#8211; a graphical tool for editing MSIs, MSPs, or MSMs; and creating transforms &#8211; you must install <i>Orca.msi<\/i> in the <i>Bin<\/i> sub-directory of your Platform SDK installation root.<\/p>\n<p>To create the transform, follow the steps below. You can also simply skip the steps and <a href=\"http:\/\/hstewart.members.winisp.net\/downloads\/pathfix.zip\">download<\/a> and extract <i>pathfix.mst<\/i>.<\/p>\n<ol>\n<li>Download either or both of the 64-bit redistributables you want to deploy:\n<ul>\n<li><a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyId=83A93864-6CD5-4BC7-AAC9-A3B31254983D\">.NET Framework Version 2.0 Redistributable Package Beta 2 ia64 (64 Bit)<\/a>\n<li><a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyId=DE4539CF-5D5C-4981-B27B-8AE747A7EA98\">.NET Framework Version 2.0 Redistributable Package Beta 2 x64 (64 Bit)<\/a><\/li>\n<\/ul>\n<li>Extract <i>netfx.msi<\/i> from <i>NetFx64.exe<\/i>:<br \/><span>NetFx64.exe \/c \/t:&#8221;&lt;path&gt;&#8221;<\/span>\n<li>Right-click on <i>netfx.msi<\/i> and select &#8220;Edit with Orca&#8221;. If you do not see the context menu item, you can open Orca from your Start -&gt; Programs menu and click File -&gt; Open and select <i>netfx.msi<\/i>.\n<li>On the Orca menu, click Transform -&gt; New Transform.\n<li>Select the &#8220;Directory&#8221; table and click the &#8220;Directory&#8221; column to sort by the directory ID.\n<li>To change the source and destination directory names:\n<ul>\n<li>Find &#8220;DD_Framework_X86.3643236F_FC70_11D3_A536_0090278A1BB8&#8221; in the &#8220;Directory&#8221; column and change its value to &#8220;frmwrk32|Framework_x86&#8221; (without quotes).\n<li>Find &#8220;DD_ProgramFilesFolder_X86.3643236F_FC70_11D3_A536_0090278A1BB8&#8221; in the &#8220;Directory&#8221; column and change its value to &#8220;PFiles32|Program Files_x86&#8221; (without quotes).\n<li>Find &#8220;DD_SystemFolder_X86.3643236F_FC70_11D3_A536_0090278A1BB8&#8221; in the &#8220;Directory&#8221; column and change its value to &#8220;Sys32|System_x86&#8221; (without quotes).\n<li>Find &#8220;Framework.3643236F_FC70_11D3_A536_0090278A1BB8&#8221; in the &#8220;Directory&#8221; column and change its value to &#8220;frmwrk|Framework&#8221; (without quotes). This step is optional.<\/li>\n<\/ul>\n<li>Optionally, you can set to what product(s) your transform applies by clicking the Transform -&gt; Transform Properties menu. I recommend checking &#8220;Same Language&#8221;, &#8220;Same Product Code&#8221;, &#8220;Product Version is Equal&#8221;, and &#8220;Major, Minor, and Update Versions&#8221; to only target beta 2 since changes were made since beta 1 and this bug has been fixed in time for RTM.\n<li>Save the transform to disk by clicking the Transform -&gt; Generate Transform menu item in Orca. For the examples below I called the transform file <i>pathfix.mst<\/i>. <\/li>\n<\/ol>\n<p>When creating an administrative installation now, pass <code>TRANSFORMS=\"&lt;path&gt;pathfix.mst\"<\/code> to the command line and copy the transform to the target directory like in the following example:<\/p>\n<pre>msiexec \/a netfx.msi \/l*v netfx_admin.log TARGETDIR=\\<i>SERVER<\/i><i>SHARE<\/i> TRANSFORMS=pathfix.mst\ncopy pathfix.mst \\<i>SERVER<\/i><i>SHARE<\/i><\/pre>\n<p>To deploy the application, you must also specify the transform when installing like in the following example:<\/p>\n<pre>msiexec \/i \\<i>SERVER<\/i><i>SHARE<\/i>netfx.msi TRANSFORMS=\\<i>SERVER<\/i><i>SHARE<\/i>pathfix.mst<\/pre>\n<p>This bug has been fixed in later builds of 2.0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you&#8217;ve tried to install the .NET Framework 2.0 Beta 2 redistributable for either ia64 or x64 from an administrative installation point, you might&#8217;ve seen an error like the following: While investigating patching scenarios for 64-bit SKUs I found that for source extraction and administrative installs the 32- and 64-bit files map to the same [&hellip;]<\/p>\n","protected":false},"author":389,"featured_media":3843,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[4,20],"class_list":["post-3143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-64-bit","tag-installation"],"acf":[],"blog_post_summary":"<p>If you&#8217;ve tried to install the .NET Framework 2.0 Beta 2 redistributable for either ia64 or x64 from an administrative installation point, you might&#8217;ve seen an error like the following: While investigating patching scenarios for 64-bit SKUs I found that for source extraction and administrative installs the 32- and 64-bit files map to the same [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/3143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/users\/389"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/comments?post=3143"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/3143\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/media\/3843"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/media?parent=3143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/categories?post=3143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/tags?post=3143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}