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

时间:2015-01-23 09:36:53

标签: c# installshield installscript

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

现在我尝试的是以下

  1. 编辑exe以更新注册表中的条目,以表示其执行是否成功/失败。
  2. 添加了第二个自定义操作以读取注册表并显示错误消息。这是一个安装脚本。
  3. 我的需要

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

    我写的脚本

    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
    

    端;

1 个答案:

答案 0 :(得分:1)

没有办法按你的要求做。您可以在返回非零退出代码之前显示来自EXE的消息,但Windows Installer仍会显示错误1722消息。

如果您可以改为从DLL运行函数,则可以选择更多选项。您可以设置属性(假设这是一个立即模式操作),而不是返回错误,并且可以使用这些属性执行更多操作,例如显示另一个对话框,或退出安装而不显示错误1722消息

信用:Old answer to similar problem