1

Я хочу сделать приложение переносимым (в Windows XP), чтобы оно могло запускаться непосредственно с компакт-диска. Приложение требует, чтобы некоторые DLL и OCX были зарегистрированы, и некоторые из них должны быть в system32 при регистрации (по какой-то причине).

Каковы последствия регистрации большого количества библиотек DLL с помощью regsvr32 в программе / скрипте-обертке вокруг приложения? Может ли это испортить систему? А что происходит, когда файлы удаляются (так как они находятся на сменном носителе)? Я думаю, я мог бы снова отменить их регистрацию, когда переносимое приложение остановлено, но что, если один из них - это обычная DLL, которая также используется другими приложениями? Разрушит ли это регистрацию эти другие приложения?

Я предполагаю, что копирование файлов случайным образом в system32 при запуске портативного приложения - плохая идея. Зачем приложению требовать, чтобы некоторые DLL и OCX находились в папке System32? Есть ли способ обойти это? Является ли единственный способ заставить программу / скрипт оболочки убедиться, что ни один из файлов не существует до копирования, и удалить их после запуска приложения?

Изменились ли эти вещи в Windows Vista и 7?

Приложение, которое я хочу сделать портативным, является демо-версией (норвежского) приложения по генеалогии Embla Familie og Slekt (норвежский веб-сайт, перевод Google). Мой дедушка, который много занимался генеалогией, недавно скончался, поэтому я хотел бы передать его работы моим родственникам. Было бы здорово, если бы все, что им нужно было сделать, это вставить компакт-диск, и программное обеспечение всплыло бы. Его установка и настройка для использования данных моего дедушки немного сложны для начинающего пользователя компьютера. (Я пытался связаться с авторами безуспешно, но я попробую еще раз, если я заставлю его работать, чтобы убедиться, что распространение демоверсии законно)

Спасибо и, пожалуйста, прости мое невежество - я обычно не запускаю Windows. :)

2 ответа2

1

Я не знаю, почему библиотеки DLL должны быть в System32; они не должны быть, это плохая практика, но прикладные библиотеки DLL находятся в системном каталоге.

Да, DLL и OCX, которые предоставляют COM-объект (например, те, которые должны быть зарегистрированы), должны быть зарегистрированы и внесены в реестр. Однако в Windows XP и более поздних версиях имеется бесплатная регистрация COM. Краткое объяснение таково для каждого.DLL и др.EXE вы создаете файл filename.ext.manifest, в котором перечислены все компоненты, которые он экспортирует и использует. К сожалению, реальность сложнее. Смотрите эту статью для описания. Теоретически возможно получить информацию, необходимую для файлов манифеста, но вам понадобится хорошее понимание COM.

0

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

Я понятия не имею, помню ли я это право (или даже более или менее правильно), или это все еще так, но копирование всех файлов на USB-накопитель и установка его на другой компьютер было бы довольно быстрым и простым проверять.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .