2009-03-17 1 views
3

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

+0

Я взял на себя смелость пометить этот «regfreecom», потому что я думаю, что это будет правильный ответ на проблему. Я понимаю, что это может быть немного раньше, чем Стивен еще не пробовал ... – MarkJ

+0

@MarkJ: Я думаю, вам не следует обсуждать вопросы с тем, что, по вашему мнению, будет правильным ответом. Это не те теги, для чего это ответы. Кажется, что Reg-free COM работает только для COM-ссылок в сборках .NET. – Tomalak

+0

@Tomalak. Спасибо за отзывы. На самом деле reg-free COM также работает со ссылками COM, используемыми клиентами VB6, например, инструмент MakeMyManifest работает только для клиентов VB6. Или прочитайте статью, указанную в моем ответе. – MarkJ

ответ

4

Steve

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

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

Мы используем это в течение нескольких лет, без каких-либо проблем.

EDIT Сайт MMM опущен. Я вижу here, что у автора возникли проблемы с их хостингом и предоставил другое место, чтобы получить Make My Manifest - download it here.

+0

Привет, у Стива были проблемы с MMM, которые он задокументировал в другом ответе. Может быть, если у вас есть время, вы можете остановиться и посмотреть, есть ли у вас понимание, основанное на вашем опыте, я думаю, он был бы благодарен. Приветствия. – MarkJ

-1

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

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

+0

не совсем не повезло ... на самом деле это то, что бесплатно для COM. как и в других ответах – MarkJ

+0

Как описано в этой записи MSDN, COM просматривает HKEY_Current_User \ Software \ Classes, прежде чем смотреть на компьютер HKEY_Classes_Root. http://msdn.microsoft.com/en-us/library/ms693350%28VS.85%29.aspx – dthrasher

1

Как правило, я согласен с тем, что Joel Coehoorn говорит в своем ответе.

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

Это немного взломать, и, возможно, это не сработает, но вы можете попробовать.

+0

Что касается вашего комментария о регистрации DLL в HKLU, а не в HKLM, я пробовал это. Используя orca для редактирования msi, я установил корневой столбец реестра в 1. Когда я это сделаю, msi не проверяет проверку валидации. Думаю, я дам манифест xml попробовать ... – 2009-03-17 19:57:05

+0

Настоятельно советуем использовать reg бесплатно COM, а не пытаться это, что звучит довольно неплохо IMHO – MarkJ

+0

Как я уже сказал - это немного взломать, но стоит попробовать. – Tomalak

4

Вместо того, чтобы непосредственно зарегистрировав 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 манифеста программного обеспечения для создания файлов манифеста нужно:

http://mmm4vb6.atom5.com/

+0

+1 Могу ли я предложить U отредактировать ответ UR, чтобы также упомянуть Make My Manifest, как было предложено OneNerd http://mmm4vb6.atom5.com/ – MarkJ

+0

В статье msdn о RegFree Com сказано следующее: «На самом деле, первоначальное намерение Reg -Free COM должен был включать существующие собственные приложения, такие как написанные на Visual Basic 6.0, C++ или некоторая комбинация языков. " Я ничего не нашел на VB6 RegFree ком ... какие-либо ссылки? – 2009-03-17 21:34:15

+0

Make My Manifest работает с VB6 - см. Ответ OneNerd – MarkJ

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

EDIT Сайт МММ опущен. Я вижу here, что у автора возникли проблемы с их хостингом и предоставил другое место, чтобы получить Make My Manifest - download it here.

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^