Не удалось запустить функцию сценария из пользовательских действий - PullRequest
0 голосов
/ 24 сентября 2018

Я реализовал собственный установочный файл, который позволит установщику регистрировать 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: After PublishProduct

Все остальные параметры последовательности имеют значение Absent from sequence.

файл журнала

InstallShield 14:17:18: вызов функции сценария RegisterComponents InstallShield 14:17:18: не удалось запустить функцию сценария, ошибка 0x80020006 InstallShield 14:17:18: CallScriptFunctionFromMsiCA () завершается, результат 0x643 CustomAction RegisterComponents вернул фактический код ошибки1603, но будет переведен на успех из-за продолжения маркировки

1 Ответ

0 голосов
/ 29 сентября 2018

Это проект MSI? Я бы не стал использовать саморегистрацию , вместо этого включите COM Extract в Build на странице свойств для рассматриваемого компонента:

COM Extract at build

Если это извлечение не работает, то у вас могут быть зависимости, которые не встречаются для загрузки файла.Например пропавший ресурс dll или что-то в этом роде.Процесс извлечения «COM Extract at Build» заполняет ряд специфичных для MSI COM-таблиц, которые заботятся обо всех деталях регистрации COM для вас (включая поддержку отката).

InstallShield Self-Регистрация : Кроме того, вы можете включить саморегистрацию файла в Installshield и вообще не запускать его с помощью кода настраиваемого действия.Я думаю, что это на странице свойств для каждого файла.

...