【问题标题】:Problem detecting installed application on Win Svr 2003 x64在 Win Svr 2003 x64 上检测已安装应用程序时出现问题
【发布时间】:2010-06-18 15:10:39
【问题描述】:

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

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

基本流程是:

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

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

没问题:

  • XP x32
  • Vista x32、x64
  • 服务器 2003 x86
  • 服务器 2008 x86、x64
  • 服务器 2008 R2 x64
  • Windows 7 x86、x64

似乎只有 Server 2003 x64 出现此问题。

【问题讨论】:

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


    【解决方案1】:

    好的。终于搞清楚是怎么回事了。

    该向导被编译为 x86,我认为注册表虚拟化会妨碍您。 x86 向导在所有其他 WinOS(32 位和 64 位)上都可以正常工作,但在 Server 2003x64 上却不行。我猜 WI 创建的 reg 条目对 x86 进程是隐藏的。

    重新编译为 MSIL 意味着它现在可以在任何地方使用,包括 Server 2003x64。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多