Я реорганизую старое приложение installshield, и мне нужно выполнить действие, вызывающее функцию из пользовательской dll. К сожалению, функция, выполняемая этим действием, зависит от другой пользовательской dll. Поэтому мой вопрос: «Возможно ли, чтобы пользовательская dll зависела от другой пользовательской dll, и если да, то как?»Installshield использует пользовательскую dll из другой пользовательской dll
Когда я пытаюсь запустить установщик, он выходит из строя с ошибкой «Установка была прервана до завершения ...» Затем я скопировал вторую пользовательскую dll в папку, которую я добавил в PATH, и все прошло хорошо. Конечно, я не могу ожидать, что мой клиент сделает это вручную.
Я использую Installshield 2008, но я верю, что ответ на мой вопрос будет таким же для всех версий.
EDIT: а может быть, мой вопрос не достаточно ясно дам пример: Скажем, у меня есть A.DLL, который имеет функцию:
UINT __stdcall
PerformAction(MSIHANDLE hInstall) // IN
{
...
help();
...
}
справки() определяется в B.DLL. Теперь, когда я создаю новое действие, я установил dll как a.dll, и это имя функции будет PerformAction, но нет способа указать, что это зависит от b.dll. Когда я копирую b.dll в папку, включенную в PATH, Установщик работает нормально, но если я не ошибаюсь.
Как вы указываете установить экран для использования файла из SUPPORTDIR? Можете ли вы привести пример для случая, который я описываю? –
InstallShield извлечет файл в SUPPORTDIR и установит свойство (используйте MsiGetProperty) с тем же именем с указанием пути к каталогу. Оттуда вы можете использовать LoadLibrary() для загрузки вашей DLL в память. –