Кроме того, вы можете включить саморегистрацию файла в Installshield и вообще не запускать его с помощью кода настраиваемого действия. Я думаю, что это на странице свойств для каждого файла.
лизовал собственный файл installscript, который позволит установщику регистрировать DLL. Я объединил это с пользовательским действием, чтобы фактически запустить созданную мной функцию. Я должен был сделать этот сценарий, потому что DLL не смогли зарегистрироваться с установкой свойства для самостоятельной регистрации. Таким образом, я застрял в том, как решить эту проблему с ошибкой настраиваемого действия, чтобы я мог проверить свой сценарий. Ниже мой сценарий:
#include "Ifx.h"
export prototype RegisterComponents(HWND);
function RegisterComponents(hMSI)
STRING sRunStr;
begin
sRunStr = WINSYSDIR ^ "regsvr32.exe";
LongPathToQuote(sRunStr, TRUE);
//change the directory to target directory
ChangeDirectory(TARGETDIR);
//register dll
if(LaunchAppAndWait(sRunStr, "/s " +
"C:\NCRUniEmulatorService\NCRUniEmulatorSO.dll",
WAIT)) < 0) then
MessageBox("NCRUniEmulatorSO.dll", SEVERE);
else
endif;
end;
Ниже приведены мои пользовательские действия:
FunctionName: RegisterComponents
Обработка возврата: синхронная
Выполнение в сценарии: отложенное выполнение
Установите Exec Sequence: после публикации продукта
Все остальные настройки последовательности установлены на «Отсутствует в последовательности».
журнальный файл
InstallShield 14:17:18: Вызов функции скрипта RegisterComponents InstallShield 14:17:18: Не удалось запустить функцию скрипта, ошибка 0x80020006 InstallShield 14:17:18: CallScriptFunctionFromMsiCA () заканчивается, результат 0x643 CustomAction RegisterComponents вернул фактический код ошибки 1603, но будет переведено на успех из-за продолжения маркировки