关于自定义操作 Installshield 失败的自定义消息
Custom Message on Failure of Custom Action Installshield
我有一个在安装时运行的自定义操作,它是一个用 C# 编写的 exe。此 exe 向用户授予对特定文件夹的权限,如果此任务失败,则安装继续没有用处。我需要它回滚,但只有在显示适当的错误消息之后。
现在我尝试的是以下
- 编辑 exe 以更新注册表中的条目以指示其执行是否 successful/failure。
- 添加了第二个自定义操作来读取注册表并显示错误消息。这是一个安装脚本。
我的需要
在从注册表中读取失败条目时回滚安装。
我写的脚本
function CheckRegistry(hMSI)
STRING keyValue;
NUMBER nType, nSize;
开始
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (RegDBGetKeyValueEx ("CSVExtraction", "AccessGranted", nType, keyValue,nSize) < 0) then
MessageBox ("RegDBGetKeyValueEx failed.", SEVERE);
abort;
else
if(keyValue != "true") then
MessageBox("Granting access to the Installation Folder failed; Hence exiting installation",SEVERE);
abort;
endif
endif
结束;
没有办法按照你的要求去做。您可以在返回非零退出代码之前显示来自 EXE 的消息,但是 Windows 安装程序仍会显示错误 1722 消息。
如果您可以 运行 来自 DLL 的函数,您将有更多选择。您可以设置属性(假设这是一个即时模式操作),而不是返回错误,并且可以使用这些属性做更多的事情,例如显示另一个对话框,或者在没有错误 1722 消息的情况下退出安装。
来源:Old answer to similar problem
我有一个在安装时运行的自定义操作,它是一个用 C# 编写的 exe。此 exe 向用户授予对特定文件夹的权限,如果此任务失败,则安装继续没有用处。我需要它回滚,但只有在显示适当的错误消息之后。
现在我尝试的是以下
- 编辑 exe 以更新注册表中的条目以指示其执行是否 successful/failure。
- 添加了第二个自定义操作来读取注册表并显示错误消息。这是一个安装脚本。
我的需要
在从注册表中读取失败条目时回滚安装。
我写的脚本
function CheckRegistry(hMSI)
STRING keyValue;
NUMBER nType, nSize;
开始
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (RegDBGetKeyValueEx ("CSVExtraction", "AccessGranted", nType, keyValue,nSize) < 0) then
MessageBox ("RegDBGetKeyValueEx failed.", SEVERE);
abort;
else
if(keyValue != "true") then
MessageBox("Granting access to the Installation Folder failed; Hence exiting installation",SEVERE);
abort;
endif
endif
结束;
没有办法按照你的要求去做。您可以在返回非零退出代码之前显示来自 EXE 的消息,但是 Windows 安装程序仍会显示错误 1722 消息。
如果您可以 运行 来自 DLL 的函数,您将有更多选择。您可以设置属性(假设这是一个即时模式操作),而不是返回错误,并且可以使用这些属性做更多的事情,例如显示另一个对话框,或者在没有错误 1722 消息的情况下退出安装。
来源:Old answer to similar problem