VB6 установить в Windows Vista как обычный пользователь - PullRequest
3 голосов
/ 17 марта 2009

У меня есть приложение VB6, которое необходимо установить в Windows Vista в качестве обычного пользователя. Используя Visual Studio 2005, я создал проект установки, который поместит приложение в безопасное место или папку обычного пользователя. У меня также есть DLL, которую я хочу установить и зарегистрировать в папке данных приложения пользователя. Как только мой установщик Windows был создан в VS'05, я перевернул 3-й бит свойств подсчета слов, используя msiinfo.exe, чтобы Vista не запрашивала учетные данные администратора при запуске msi. Приложение устанавливается без проблем, пока не попытается зарегистрировать dll в папке данных приложения пользователя. Когда он достигает этой точки, он выдает ошибку, утверждая, что он не может зарегистрировать библиотеку типов для DLL. Похоже, установщик не имеет прав для регистрации DLL в папке пользователей. Это правильно? Насколько я понимаю, Vista жаловалась только на то, что обычные пользователи обновляют или изменяют элементы, затрагивающие всех пользователей компьютера. Есть идеи? Мысли? Предложения?

Ответы [ 6 ]

4 голосов
/ 17 марта 2009

Steve

Мое предложение, если вы можете, использовать regfree com / manifest файлы вместо регистрации файлов ocx / dll, что, как вы упоминаете, является настоящей рутиной для учетной записи обычного пользователя.

Существует отличное бесплатное приложение, которое вы также можете использовать для создания манифеста здесь: http://mmm4vb6.atom5.com/

Мы используем это уже несколько лет, без проблем.

РЕДАКТИРОВАТЬ Веб-сайт MMM не работает. Я вижу здесь , что у автора возникли проблемы с хостингом, и он предоставил другое место для получения Make My Manifest - скачайте его здесь .

4 голосов
/ 17 марта 2009

Вместо прямой регистрации файлов DLL вы можете использовать RegFree COM.

Это включает создание файла манифеста XML для вашего приложения, поэтому Windows будет искать ваши DLL-файлы в папке приложения, а не использовать системный реестр для их поиска.

Это означает, что ваше приложение будет работать должным образом без необходимости установки DLL установщиком.

Эти ссылки имеют больше информации:

http://msdn.microsoft.com/en-us/magazine/cc188708.aspx

http://www.devx.com/vb/Article/32888/1954

Вы можете использовать бесплатное программное обеспечение Make My Manifest для создания необходимых файлов манифеста:

http://mmm4vb6.atom5.com/

1 голос
/ 17 марта 2009

Как правило, я согласен с тем, что Джоэл Кохорн говорит в своем ответе.

Однако, зная, как работает реестр в этом отношении, я могу предложить вам вручную зарегистрировать вашу DLL на HKEY_CURRENT_USER\SOFTWARE\Classes, в основном повторяя то, что regsvr32.exe сделает с HKEY_LOCAL_MACHINE\SOFTWARE\Classes.

Это что-то вроде хака, и, возможно, это не сработает, но вы можете попробовать.

0 голосов
/ 14 октября 2009

Unattended Make My Manifest - римейк MMM, который можно использовать для создания манифестов в автоматических сборках. Он использует файл сценария для добавления зависимых компонентов COM.

0 голосов
/ 18 марта 2009
  • Без регистрации COM: MakeMyManifest хорошо известны. Это автоматический инструмент для создания манифестов для проектов VB6: я сам не пробовал.
  • DirectCOM является альтернативой COM без регистрации. У него также есть поклонники, опять же, я не пробовал.

РЕДАКТИРОВАТЬ Веб-сайт MMM не работает. Я вижу здесь , что у автора возникли проблемы с хостингом, и он предоставил другое место для получения Make My Manifest - скачайте его здесь .

Существует полуавтоматическая техника для создания манифестов для COM без регистрации. Вы можете создавать манифесты с помощью Visual Studio 2008 (вы можете использовать бесплатную версию, такую ​​как Visual Basic Express Edition). Затем внесите несколько правок, чтобы сделать манифесты пригодными для использования с VB6. См. этот раздел этой статьи MSDN для пошаговых инструкций - игнорируйте остальную часть статьи, которая касается ClickOnce.

0 голосов
/ 17 марта 2009

Регистрация DLL влияет на всех пользователей (библиотеки DLL зарегистрированы глобально) и поэтому требует прав администратора. Обойти это невозможно.

Решение для более новых сред программирования состоит в том, что DLL не нужно регистрировать для использования. Однако, поскольку vb6 полагается на COM, вам, вероятно, не повезло.

...