关于自定义操作 Installshield 失败的自定义消息

Custom Message on Failure of Custom Action Installshield

我有一个在安装时运行的自定义操作,它是一个用 C# 编写的 exe。此 exe 向用户授予对特定文件夹的权限,如果此任务失败,则安装继续没有用处。我需要它回滚,但只有在显示适当的错误消息之后。

现在我尝试的是以下

  1. 编辑 exe 以更新注册表中的条目以指示其执行是否 successful/failure。
  2. 添加了第二个自定义操作来读取注册表并显示错误消息。这是一个安装脚本。

我的需要

在从注册表中读取失败条目时回滚安装。

我写的脚本

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