2010-07-12 54 views
1

我们有一大套产品,包括:如何使用VS安装项目在32位或64位Windows上正确安装“任意CPU”代码?

  • 用VB6编写的桌面应用程序。
  • 用.NET编写的桌面应用程序。
  • 用.NET编写的Windows服务。
  • 用.NET编写的ASP.NET web应用程序。
  • 用.NET编写的ASMX和WCF服务。

所有的.NET代码都是在VS2008中编写的,面向.NET 3.5和“任何CPU”。我们可以针对特定的处理器,但不愿意这样做,因为它会导致依赖树进一步下降。我们还没有能够将任何东西移动到.NET 4.0,但稍后它将成为一种选择。

所有的应用程序共享一些重要的注册表项。我们通过让.NET代码始终查看32位注册表视图来解决注册表重定向问题。一些.NET代码通过COM interop与VB6 DLL进行对话,但这非常有限,我们可以轻松地删除这种依赖关系(现在注释掉,稍后在.NET中重写)。

所有的Web应用程序和服务都设计为托管在IIS中。 5.1以后的所有版本都需要支持。

我们的构建虚拟机当前正在运行Windows XP(32位)。如有必要,我们可以创建新的。

我的任务是确保所有内容在64位Windows(所有版本)上均可正常运行。我目前遇到.NET安装项目的问题,所有这些都是使用VS2008安装项目模板编写的。

即使源代码是Any CPU,安装项目也没有此功能。您必须将TargetPlatform属性设置为一个处理器。这不是很有用。我们不能有一个setup.exe在32位O/S上安装为32位,在64位O/S上安装为64位?如果我是安装应用程序的最终用户,我不知道要运行哪个安装程序。

回答

1

我已经研究过VS2010安装项目,WiX和InstallShield,并且它们的行为都是一样的。我将不得不把这个问题写成“不可能”。我打算做:

  • 只需提供单独的32位和64位安装程序。
  • 编写一个单独的加载程序批处理文件或exe以检测比特位并运行相应的安装程序。
0

我有一个应用程序,可以决定在运行时加载哪些DLL,包括32位或64位DLL。我结束了我的老朋友setup2go来完成这个任务。不管怎么样,无法将64位DLL安装到x86安装程序中,除非将其更改为x64,但这不是我想要的,它也应该安装在32位系统上,其中64位DLL将占用一点空间但不会造成伤害。

所以只是谷歌setup2go,这是可能的,也许只是没有与微星。

相关问题