Я хочу сделать приложение переносимым (в Windows XP), чтобы оно могло запускаться прямо с компакт-диска. Приложению требуется, чтобы некоторые DLL и OCX были зарегистрированы, а некоторые из них должны быть в system32 при регистрации (по некоторым причинам).
Каковы последствия регистрации большого количества библиотек DLL с помощью regsvr32 в программе / скрипте-обертке вокруг приложения? Может ли это испортить систему? И что происходит, когда файлы удаляются (так как они находятся на съемном носителе)? Я думаю, я мог бы снова отменить их регистрацию, когда переносимое приложение остановлено, но что, если один из них - это обычная DLL, которая также используется другими приложениями? Разрушит ли это регистрацию эти другие приложения?
Я предполагаю, что копирование файлов случайным образом в system32 при запуске портативного приложения - плохая идея. Зачем приложению требовать, чтобы некоторые DLL и OCX находились в папке System32? Есть ли способ обойти это? Является ли единственный способ заставить программу / скрипт-обертку убедиться, что ни один из файлов не существует до копирования, и удалить их после запуска приложения?
Изменились ли эти вещи в Windows Vista и 7?
Приложение, которое я хочу сделать переносным, - это демо-версия (норвежского) приложения по генеалогии Embla Familie og Slekt ( норвежский сайт, переведенный Google ). Мой дедушка, который много занимался генеалогией, недавно скончался, поэтому я хотел бы передать его работы моим родственникам. Было бы здорово, если бы все, что им нужно было сделать, это вставить компакт-диск, и программное обеспечение всплыло бы. Его установка и настройка для использования данных моего дедушки немного сложны для начинающего пользователя компьютера. (Я пытался связаться с авторами безуспешно, но я попробую еще раз, если я заставлю его работать, чтобы убедиться, что распространение демоверсии законно)
Спасибо, и, пожалуйста, прости мое невежество - я обычно не запускаю Windows. :)
Ответы:
Я не знаю, почему библиотеки DLL должны быть в System32; они не должны быть, это плохая практика, но прикладные библиотеки DLL находятся в системном каталоге.
Да, DLL и OCX, которые предоставляют COM-объект (например, те, которые должны быть зарегистрированы), должны быть зарегистрированы и внесены в реестр. Однако в Windows XP и более поздних версиях имеется бесплатная регистрация COM. Краткое объяснение состоит в том, что для каждого .DLL и .EXE вы создаете файл filename.ext.manifest, в котором перечислены все компоненты, которые он экспортирует и использует. К сожалению, реальность сложнее. Смотрите эту статью для описания . Теоретически возможно получить информацию, необходимую для файлов манифеста, но вам нужно хорошее понимание COM.
источник
Много лет назад я понял, что когда Windows нужен dll-файл, который не был зарегистрирован, он автоматически просматривается в каталоге exe-файла. В таком мире сделать приложение переносимым очень просто.
Я понятия не имею, помню ли я это право (или даже более или менее верно), или это все еще так, но копирование всех файлов на USB-накопитель и установка его на другой компьютер было бы довольно быстрым и простым проверять.
источник