Предложения по развертыванию OpenSSL DLL - PullRequest
5 голосов
/ 09 июля 2010

Я сделал простое приложение, которое использует Indy и требует OpenSSL dll.

Я не собираюсь писать установщик для него, поэтому у меня есть 2 варианта:

1) разверните его, скопировав приложение exe + libeay32.dll + ssleay32.dll в ту же папку

2) поместите libeay32.dll и ssleay32.dll в ресурсы exe и извлеките их в путь к приложению при запуске программы (но это может быть проблемой в случае, если я запускаю exe на windowsserver 2008 или windows vista, и я использовал папку Program Files для «развертывания»)

Можете ли вы прокомментировать эти технические вопросы или предложить лучший подход?

Ответы [ 4 ]

4 голосов
/ 09 июля 2010

Вы можете придерживаться варианта 1): D

Или вы можете использовать вариант с номером 2, но извлечь их в путь к данным приложения:

GetSpecialFolderPath(CSIDL_LOCAL_APPDATA))

и использовать

SetDLLDirectory(DirectoryPath:PWideChar) 

, чтобы указать, куда загружать библиотеки DLL из

Конечно, если честно, проще написать простой установщик!

Редактировать: Да, да, как упоминал UnixShadow, хэшируйте dll, чтобы вы могли быть уверены, что используете правильные файлы!

3 голосов
/ 09 июля 2010

Вариант 3: используйте Inno для его установки! У вас может быть веская причина не использовать инсталлятор, но если вы считаете, что это слишком дорого (по времени или деньгам), вы можете проверить Inno. Я начал использовать его ранее в этом году и был поражен тем, насколько легко его освоить и использовать. И это бесплатно!

Конечно, побочным преимуществом изучения Inno является то, что он будет доступен в будущем для других проектов ...

2 голосов
/ 09 июля 2010

В зависимости от характера приложения вы можете скомпилировать его с помощью Lazarus.

Я знаю, я знаю, это далеко, и я не знаю sb, кто на самом деле сделал это с openssl, так что это, вероятно, слишком много работы. И все же я хотел бы отметить это теоретическое решение.

Это потому, что FPC / Lazarus совместим с mingw и может использовать его (компоновщик GNU), вы можете попытаться статически связать библиотеки mingw (.a).

Некоторые люди в прошлом экспериментировали с этим, и я слышал, что люди преуспевают в этом с mysql, но, к сожалению, они не дали подробностей.

Так что у меня нет убедительных доказательств того, что это сработало, что делает его немного академичным.

1 голос
/ 09 июля 2010

Я бы установил их в одну папку (вариант 1), с добавлением к MD5 двух библиотек при запуске моей программы.Чтобы убедиться, что они не были изменены.Это не очень помогает, когда дело доходит до безопасности, потому что хакер может также изменить мою сумму MD5, с которой я бы сравнил.Но это по крайней мере остановит программу от использования поврежденных DLL.Конечно, это также заблокировало бы возможность обновления dll без обновления основного приложения (на хорошем или на плохом).

...