Не удается найти код продукта MSI в 64-битной Windows - PullRequest
1 голос
/ 03 января 2012

Рассмотрим следующее:

Я использую VS2010 для создания 32-битной службы Windows на C # .NET (target = x86, framework = 4.0) и соответствующего проекта установки (.msi).

Моим разработчиком является 32-битный Widnows XP Professional SP3.

У меня есть особая потребность: я должен иметь возможность программно удалить мой сервис из отдельного 32-битного приложения. Для этой цели удаляемое приложение должно знать код продукта установленной службы, когда необходимо выполнить удаление (чтобы иметь возможность вызвать «msiexec.exe / uninstall»).

Я решил эту проблему, позволив 32-разрядному приложению удаления найти в реестре установленные компоненты, пока оно не наткнется на то, которое соответствует имени моих служб, и затем выберет соответствующий код продукта. Это очень просто и отлично работает.

Сегодня я попытался установить свою службу на 64-разрядной Windows 7. Служба работает нормально, но когда дело доходит до удаления, мое 32-разрядное приложение удаления больше не может найти код продукта в реестре. Это связано с тем, что 32-разрядное приложение-деинсталлятор может видеть только перенаправленную (wow6432node) часть реестра, в то время как информация об установке (по неизвестным причинам) была помещена в исходную неориентированную часть.

Как я могу решить эту проблему?

  • Могу ли я заставить установщик поместить информацию об установке в перенаправленную часть реестра?

  • Могу ли я получить доступ и отсканировать часть ненаправленного реестра из моего 32-разрядного приложения удаления?

  • Могу ли я - во время установки - каким-либо образом получить код продукта и сохранить его в другом месте (доступном из моего 32-разрядного деинсталлятора)?

  • Есть ли другой способ получения кода продукта, который не включает поиск в реестре?

1 Ответ

0 голосов
/ 29 января 2012

Вместо того, чтобы делать точные записи в реестре, вы должны использовать сборку Microsoft.Deployment.WindowsInstaller WiX DTF, чтобы сделать вызовы API установщика Windows для определения искомого кода продукта.

...