使用 vbscript 自定义操作返回值/取消安装

     2023-02-16     286

关键词:

【中文标题】使用 vbscript 自定义操作返回值/取消安装【英文标题】:Return a value / cancel installation with vbscript custom action 【发布时间】: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 源代码中找到该事件,但找不到。 【参考方案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

【讨论】:

使用advancedinstaller打包时如何获取【自定义】操作的返回值?

使用AdvancedInstaller打包时,在Dialogs中的【下一步】按下时增加了一个执行exe的自定义操作,如何获取这个exe执行后的返回值?谢谢。参考技术A$yourfunction=返回值 查看详情

.NET 部署项目:取消卸载程序的自定义操作

】.NET部署项目:取消卸载程序的自定义操作【英文标题】:.NETDeploymentproject:CustomActionthatcancelsuninstaller【发布时间】:2010-11-2910:38:24【问题描述】:我有一个.NET部署项目。我想添加一个自定义卸载操作来检查某些条件并可选择... 查看详情

Scala UDF 函数对数组列进行操作并返回自定义值

】ScalaUDF函数对数组列进行操作并返回自定义值【英文标题】:ScalaUDFfunctiontooperateonArrayColumnandreturncustomvalue【发布时间】:2020-06-2718:17:32【问题描述】:我有2个这样的数据集valjsonStr=""""TransactionId":1,"TransactionName":"Name","Order":12,"Re... 查看详情

操作dom

...字符串 3.属性既可以获取也可以修改 4.获取类名使用className,不能使用class,因为是关键字 点语法获取元素的特点 1.可以获取标准属性 2.可以获取点语法动态添加的属性 3.无法获取行内自定义属性 4.无法获... 查看详情

Wix - 自定义操作返回代码 - 处理

】Wix-自定义操作返回代码-处理【英文标题】:Wix-CustomActionReturnCode-Handling【发布时间】:2016-09-2013:17:42【问题描述】:请仔细阅读,因为我将解释我正在尝试做什么。我有一个wix安装程序,它调用自定义操作来验证用户输入。... 查看详情

mvc过滤器:自定义操作过滤器(代码片段)

一、操作过滤器1、定义操作过滤器用于实现IActionFilter接口以及包装操作方法执行。IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted。OnActionExecuting在操作方法之前运行。OnActionExecuted在操作方法之后运行,可以执行其他... 查看详情

vbscript在每张纸上执行相同的操作。编辑第二个子例程以进行自定义(代码片段)

查看详情

CI-Merchant 中的自定义付款值

...自定义值,以便在调用IPSN端点时贝宝将其返回给我。我使用常规的html表单执行此操作,一切都很好,但如果我使用CI-Merchant执行此操作,则自定义值为空。$params=array(\'amount\'=> 查看详情

vbscript使用webapi在自定义代码中添加ie样式表(代码片段)

查看详情

为啥我的应用程序返回“操作必须是普通对象,使用自定义中间件进行异步操作”

】为啥我的应用程序返回“操作必须是普通对象,使用自定义中间件进行异步操作”【英文标题】:Whydoesmyapplicationreturn\'Actionsmustbeplainobjects,usecustommiddlewareforasyncaction\'为什么我的应用程序返回“操作必须是普通对象,使用自定... 查看详情

向 WiX 安装程序添加自定义操作

...【发布时间】:2015-09-0110:35:06【问题描述】:我正在尝试使用WiX安装程序在cmd中运行自定义命令。我使用Product.wxs中的包含文件,该文件在整个安装过程中被正确使用。我有3个自定义操作,其中2个工作正常。似乎不起作用的一... 查看详情

Django 自定义管理操作:如何在完成时取消选择?

】Django自定义管理操作:如何在完成时取消选择?【英文标题】:DjangocustomAdminAction:howtodeselectoncompletion?【发布时间】:2015-04-0922:05:59【问题描述】:我编写了一个Django自定义管理操作(https://docs.djangoproject.com/en/1.7/ref/contrib/admin/a... 查看详情

result(自定义操作返回结果)

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceWdj{///<summary>///操作返回结果,使用时建议判断State状态///</summary>publicclassResult:ResultHandler<int>{///&l 查看详情

使用 WiX 自定义操作在安装文件夹中创建文件

】使用WiX自定义操作在安装文件夹中创建文件【英文标题】:CreatefileininstallationfolderusingWiXcustomaction【发布时间】:2014-07-1716:30:38【问题描述】:我尝试创建一个wix安装程序,它需要在安装后在程序文件夹中创建一个文件。为此... 查看详情

如何使用自定义单元格大小提高 UICollectionView 的性能?

】如何使用自定义单元格大小提高UICollectionView的性能?【英文标题】:HowtoimproveperformanceofUICollectionViewwithcustomcellsizes?【发布时间】:2013-08-2614:03:16【问题描述】:当用户键入时,我通过在后台线程中遍历本地单词图来检索结果... 查看详情

Django 自定义模板标签不返回任何值

...】:2014-10-1710:06:05【问题描述】:我正在学习如何创建和使用自定义模板标签。officialdocumentation非常擅长描述如何添加模板标签功能等,但它并没有说明如何实际创建模板标签。我的问题是我试图在我的views.py文件中返回以下随... 查看详情

用户自定义函数

...但它可以像系统函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE命令来执行。  在SQLServer中根据函数返回值形式的不同将用户自定义函数分为三种类型:  (1)标量函数  (2)内... 查看详情

springbootthymeleaf需要使用data-*,自定义属性,获取值怎么操作

springbootthymeleaf的页面中,设置属性,一般都是使用th:text,这样的确是可以设置比如a的属性或者p等等的属性,现在我循环遍历,显示多个菜单的时候,我需要增加一个自定义的属性,以便于点击的时候能够传递参数,所以想到html中的data-ces... 查看详情