【问题标题】:Return a value / cancel installation with vbscript custom action使用 vbscript 自定义操作返回值/取消安装
【发布时间】:2013-06-26 23:03:27
【问题描述】:

我的安装程序中有一个自定义操作,它使用 vbscript 自定义操作打开一个消息框。

<CustomAction Id="EXENotFound" Script="vbscript" Return="check">
      <![CDATA[
        Dim i
        If session.Property("REMINDEX_SHORTCUT") = "" Then
          i = MsgBox(session.Property("TextProp"), 1)
        End If
      ]]>
</CustomAction>

如果 i = 2 的值(如果在消息框中按下取消),我想取消安装。如果我的脚本返回值 3,我想我可以取消安装,但它只返回 0。我试过这个:

Dim i
If session.Property("REMINDEX_SHORTCUT") = "" Then
  i = MsgBox(session.Property("TextProp"), 1)
End If
If i = 2 Then
  return 3
End If

这会引发一些关于“类型不匹配”的错误。

我绝望的时候也试过这个:

<CustomAction Id="EXENotFound" Script="vbscript" Return="check">
          <![CDATA[
            Dim i
            If session.Property("REMINDEX_SHORTCUT") = "" Then
              i = MsgBox(session.Property("TextProp"), 1)
            End If
            If i = 2 Then
              EXENotFound = 3
            End If
          ]]> 
</CustomAction>

我在网上进行了广泛的研究,但无法找到如何通过自定义操作取消安装,甚至无法找到如何简单地手动返回 3。

任何建议将不胜感激

【问题讨论】:

  • 您应该使用 Windows Installer UI 而不是自定义操作。开始here
  • 谢谢!那效果要好得多。但是,现在我在单击“安装”时弹出了该消息,我已经失去了实际的安装功能。您是否知道应该触发以开始安装的事件,以便我可以将其链接到自定义提示中的控件之一,而不是默认安装按钮?我试图在 VerifyReadyDlg 源代码中找到该事件,但找不到。

标签: vbscript wix installation custom-action wix3.7


【解决方案1】:

我只涉足了一点 WiX,从那时起已经有好几年了,但我认为您需要将代码放入函数中:

<CustomAction Id="EXENotFound" Script="vbscript" Return="check">
  <![CDATA[
    Function AskUser
      AskUser = 0
      If session.Property("REMINDEX_SHORTCUT") = "" Then
        AskUser = MsgBox(session.Property("TextProp"), 1)
      End If
    End Function
  ]]>
</CustomAction>

【讨论】:

    【解决方案2】:

    如果您在 UI 序列中,那么执行此操作的正确方法是显示使用您的 MSI 开发工具构建的标准对话框,并连接取消逻辑(如果这是选择之一)。其他答案主要涵盖了这一点。在执行序列(来自自定义操作)中显示消息的正确方法是调用 MsiProcessMessage(或安装程序对象或 DTF 托管 CA 等效项)。如果合适,返回 IDCANCEL。

    https://msdn.microsoft.com/en-us/library/aa370354(v=vs.85).aspx

    http://microsoft.public.platformsdk.msi.narkive.com/oKHfPSZc/using-msiprocessmessage-in-a-c-custom-action

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      相关资源
      最近更新 更多