【问题标题】:Custom Message on Failure of Custom Action Installshield自定义操作 Installshield 失败的自定义消息
【发布时间】:2015-01-23 09:36:52
【问题描述】:

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

现在我尝试的是以下

  1. 编辑了 exe 以更新注册表中的条目以指示其执行是否成功/失败。
  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

结束;

【问题讨论】:

  • @helb 已编辑问题

标签: c# installshield installscript


【解决方案1】:

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

如果您可以改为从 DLL 运行函数,则您有更多选择。除了返回错误之外,您还可以设置属性(假设这是一个即时模式操作),并且可以使用这些属性来做进一步的事情,例如显示另一个对话框,或者在没有错误 1722 消息的情况下退出安装。

信用:Old answer to similar problem

【讨论】:

  • 感谢您的回答。已编辑问题。请看一下
  • 是的,我无法从 exe 返回错误以显示自定义消息,但我使用了另一个选项(如问题中所述)。但仍然无法从安装脚本回滚
  • @ajay 要回滚,我建议阅读以下内容:stackoverflow.com/questions/12817740/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多