InstallShield UseDLL () не находит зависимости dll в том же каталоге - PullRequest
0 голосов
/ 17 марта 2019

У меня есть 1 файл dll, который я пытаюсь загрузить во время установки с помощью UseDLL () в одном из моих скриптов установки. это DLL имеет 2 DLL, это зависит от. они оба расположены в одном и том же каталоге основной библиотеки.

При сборке установки с более старой установкой - она ​​находит ее зависимости и работает нормально. Когда я пытаюсь построить его с IS2016, он терпит неудачу, потому что не находит своих зависимостей. (Если я поставлю эти 2 dll в SysWOW64 - он найдет их и работает нормально).

В чем проблема?

Спасибо, Дуди

1 Ответ

1 голос
/ 18 марта 2019

Похоже, что InstallShield 2018 облегчает эту задачу благодаря новому флагу включения / выключения, который называется DLL_DIRECTORY_SUPPORTDIR.Но в InstallShield 2016 есть хороший шанс, что вы можете добавить следующий код InstallScript, чтобы найти зависимости в SUPPORTDIR.Если ваши библиотеки DLL находятся в другом каталоге, замените их вместо этого.

// Add prototype for SetDllDirectory(); this typically goes near the top of your script
prototype number kernel32.SetDllDirectoryW(wstring);
// Call it; this goes in a function called before your UseDLL call
SetDllDirectoryW(SUPPORTDIR);

Обратите внимание, что выполнение этого снимает некоторую защиту от установки DLL, поэтому это безопаснее всего делать, только если вы убедитесь, что библиотеки DLL ввопрос либо проактивно устойчив к таким вещам, либо если вы проверите и обезопасите соответствующий каталог.(Я не уверен, что InstallShield делает это для вас.)

...