Проблема с обнаружением установленного приложения на Win Svr 2003 x64 - PullRequest
0 голосов
/ 18 июня 2010

У меня есть x86-приложение для Windows, которое состоит из пары служб и пользовательского интерфейса.

Из-за различных проблем, связанных с необходимостью правильного обновления различных 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
  • Server 2003 x86
  • Server 2008 x86,x64
  • Server 2008 R2 x64
  • Windows 7 x86, x64

Эта проблема возникает только на Server 2003 x64.

1 Ответ

0 голосов
/ 24 июня 2010

OK.Наконец-то выяснилось, что происходит.

Мастер был скомпилирован как x86, и я думаю, что виртуализация реестра мешала.Мастер x86 прекрасно работает на всех других WinOS (32 и 64-битных), но на Server 2003x64 - нет.Я предполагаю, что записи reg, созданные WI, были скрыты от процесса x86.

Перекомпиляция как MSIL означает, что теперь он работает везде, включая Server 2003x64.

...