{"id":2473,"date":"2006-02-01T19:06:00","date_gmt":"2006-02-01T19:06:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/heaths\/2006\/02\/01\/differentiating-64-bit-editions-of-windows-xp-and-windows-server-2003\/"},"modified":"2006-02-01T19:06:00","modified_gmt":"2006-02-01T19:06:00","slug":"differentiating-64-bit-editions-of-windows-xp-and-windows-server-2003","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/setup\/differentiating-64-bit-editions-of-windows-xp-and-windows-server-2003\/","title":{"rendered":"Differentiating 64-bit Editions of Windows XP and Windows Server 2003"},"content":{"rendered":"<p>Microsoft Windows provides a lot of base services on which applications can\nbe written, but there are differences between all the various editions of\nWindows. While it&#8217;s far more common to have a minimum dependency on a particular\nplatform, cases may arise where an application may require, for example, Windows\nXP but won&#8217;t run on Windows Server 2003. The recent release of\n<a href=\"http:\/\/www.microsoft.com\/windows\/ie\/ie7\/ie7betaredirect.mspx\">Internet\nExplorer 7.0 Beta 2 Preview<\/a> is one such example, requiring Windows XP SP2.<\/p>\n<p>While ultimately you should use the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/appsearch_table.asp\">\nAppSearch table<\/a> and related tables like the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/drlocator_table.asp\">\nDrLocator table<\/a> for finding directories and files, along with the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/signature_table.asp\">\nSignature table<\/a> for detecting versions of files, validating a particular\nplatform may be good enough in support scenarios.<\/p>\n<p>If you have an application that will only run in\n<a href=\"http:\/\/www.microsoft.com\/windowsxp\/default.mspx\">Windows XP<\/a> and\n<a href=\"http:\/\/www.microsoft.com\/windowsxp\/64bit\/default.mspx\">Windows XP\n64-bit<\/a> but won&#8217;t run in\n<a href=\"http:\/\/www.microsoft.com\/windowsserver2003\/64bit\/x64\/default.mspx\">\nWindows Server 2003 SP1 64-bit<\/a> you&#8217;ll find that the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/versionnt.asp\">\n<code>VersionNT<\/code> property<\/a> for both of the latter 64-bit platforms is the same\nvalue: 502. The same is true for the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/versionnt64.asp\"><code>VersionNT64<\/code> property<\/a>\nthat is set only on 64-bit platforms. What&#8217;s more is that the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/windowsbuild.asp\">\n<code>WindowsBuild<\/code> property<\/a> and\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/servicepacklevel.asp\">\n<code>ServicePackLevel<\/code> property<\/a> for both 64-bit editions of Windows XP and Windows\nServer 2003 is the same: 3790 and 1, respectively. Now what?<\/p>\n<p>Fortunately there&#8217;s the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/msintproducttype.asp\">\n<code>MsiNTProductType<\/code> property<\/a> defined for NT platforms with Windows Installer\n2.0 and later. For Windows XP which is a workstation platform, this value will\nbe 1. For Windows Server 2003 this value will be 2 for a domain controller, and 3 for a server edition.\nSince, from the\n<a HREF=\"\/heaths\/archive\/2005\/11\/15\/493033.aspx\">Windows\nInstaller Supportability<\/a> matrix, Windows XP RTM ships with Windows Installer\n2.0 rest assured that this property will be defined for this scenario. So if you only wanted your application to\ninstall on Windows XP editions you could add the following condition to your\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/launchcondition_table.asp\">LaunchCondition table<\/a>:<\/p>\n<pre>VersionNT = 501 OR (VersionNT64 = 502 AND MsiNTProductType = 1)<\/pre>\n<p>These values corresponds to the values for the\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/sysinfo\/base\/osversioninfoex_str.asp\"><code>OSVERSIONEX.wProductType<\/code> field<\/a>\nobtained from the native\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/sysinfo\/base\/getversionex.asp\"><code>GetVersionEx<\/code> function<\/a>. There are more\n<a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/operating_system_properties.asp\">operating system\nproperties<\/a> that correspond to other fields in the <code>OSVERSIONEX<\/code> structure you can use in Windows Installer as well.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft Windows provides a lot of base services on which applications can be written, but there are differences between all the various editions of Windows. While it&#8217;s far more common to have a minimum dependency on a particular platform, cases may arise where an application may require, for example, Windows XP but won&#8217;t run on [&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":[20],"class_list":["post-2473","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-installation"],"acf":[],"blog_post_summary":"<p>Microsoft Windows provides a lot of base services on which applications can be written, but there are differences between all the various editions of Windows. While it&#8217;s far more common to have a minimum dependency on a particular platform, cases may arise where an application may require, for example, Windows XP but won&#8217;t run on [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/2473","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=2473"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/2473\/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=2473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/categories?post=2473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/tags?post=2473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}