在Win Svr 2003 x64上检测已安装的应用程序时出现问题

时间:2010-06-18 15:10:40

标签: c# installer registry windows-server-2003 64-bit

我有一个x86 Windows应用程序,它由几个服务和一个客户端ui组成。

由于说服各个MSI正确升级的各种问题,安装过程现在由向导式程序管理,该程序检测当前安装的内容并通过存储用户的当前设置,卸载现有软件和安装来处理升级新版本。

基本过程是:

  • 查看HKLM\Software\Classes\Installer\Products
  • 遍历其中的GUID键,查找ProductName="(my app name)"
  • 如果找不到,请从HKCU\Software\Microsoft\Installer\Products开始重复
  • 如果找到,请为用户提供升级(如前所述),否则进行全新安装(即向导向用户询问各种问题)

现在,从XP开始,这几乎适用于你提到的任何Windows平台。它仅在Windows Server 2003 x64上失败,因为向导未检测到现有安装 - 尽管存在与我测试的任何其他平台上完全相同的注册表项。

没关系:

  • XP x32
  • Vista x32,x64
  • Server 2003 x86
  • Server 2008 x86,x64
  • Server 2008 R2 x64
  • Windows 7 x86,x64

只有Server 2003 x64才会出现此问题。

1 个答案:

答案 0 :(得分:0)

行。最后得出了一些正在发生的事情。

该向导编译为x86,我认为注册表虚拟化正在阻碍。 x86向导在所有其他WinOS(32和64位)上运行良好,但在Server 2003x64上却没有。我想WI创建的reg条目是从x86进程中隐藏的。

重新编译为MSIL意味着它现在无处不在,包括Server 2003x64。