Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 除了自定义操作的成功之外,还应该返回什么_Vb.net_Wix_Advanced Installer - Fatal编程技术网

Vb.net 除了自定义操作的成功之外,还应该返回什么

Vb.net 除了自定义操作的成功之外,还应该返回什么,vb.net,wix,advanced-installer,Vb.net,Wix,Advanced Installer,我正在尝试使用WiX工具集提供的VB自定义操作项目模板为安装程序编写第一个自定义操作(使用构建)。本质上,我只想测试机器上的Ram数量,以确定如果还没有安装前提条件的版本,那么应该安装哪个版本 到目前为止(在半伪代码中)我有以下内容: Public Class CustomActions <CustomAction()> _ Public Shared Function CustomAction1(ByVal session As Session) As ActionResult

我正在尝试使用WiX工具集提供的VB自定义操作项目模板为安装程序编写第一个自定义操作(使用构建)。本质上,我只想测试机器上的Ram数量,以确定如果还没有安装前提条件的版本,那么应该安装哪个版本

到目前为止(在半伪代码中)我有以下内容:

Public Class CustomActions

<CustomAction()> _
Public Shared Function CustomAction1(ByVal session As Session) As ActionResult
    session.Log("Begin CustomAction1")
    If New Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory > [ram size here] Then
        Return ActionResult.Success
    Else
        Return ActionResult.SkipRemainingActions
    End If

End Function

End Class
公共类自定义操作
_
公共共享函数CustomAction1(ByVal会话作为会话)作为ActionResult
session.Log(“开始CustomAction1”)
如果新的Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory>[ram大小]则
返回ActionResult.Success
其他的
返回ActionResult.skipPreMiningActions
如果结束
端函数
末级

我想知道的是,如果正在测试的机器上的ram小于提示成功的结果,那么返回ActionResult.SkipPreMiningActions是否是正确的选择。

这是我的2美分。。。如果不满足条件,我将终止安装。如果您使用您所拥有的,那么安装仍将继续/跳过,实际上它将跳过所有其他条件。当您使用“ActionResult.Failure”时,将回滚安装

我会用

 Return ActionResult.Failure

顺便说一句,我会用Try/Catch来概括这一点,然后抛出一条消息

这是一个错误的问题(尽管我同意
ActionResult.Failure
的答案)


正确的问题是,检查Windows Installer中总可用内存的最佳方法是什么。根据,答案是与进行比较,正确的做法是在a中,而不是在自定义操作中。

Michael,我倾向于同意您的看法,但目前在安装先决条件时,高级安装程序不提供此选项。从本质上说,我试图决定在64操作系统上安装64位sql server是否有益。据我所知,只有当您拥有超过4 gb的ram(数据库本身不会很大)时,才有真正的收益。因此,目前使用AI评估这一点的唯一方法是使用自定义操作并使用其结果来确定要加载的sql版本。您有什么类型的先决条件,它是基于功能的还是预安装的?如果是预安装,则无法使用自定义操作;如果是基于功能的,则是否尝试直接在“组织中的功能”页面上设置条件?(这将导致使用AI中的Condition元素,正如Michael所建议的那样)。Bogdan,先决条件是Pre-install(参见我在Michael回答下的评论)。你的同事Dan曾建议,自定义操作可能是我问题的解决方案(AI论坛上的功能请求),但这可能不是正确的方法。如果不能做到这一点,那也没什么大不了的,因为我可以根据操作系统安装sql版本,但由于64位版本代表了更大的下载量,我想最好检查一下,看看最终用户是否会从64位版本而不是32位版本中积极获益。嗨,Dom,我恐怕Dan(我的同事)在论坛上表述他的答案时犯了一个小错误。他应该说的是,您可以创建自己的自定义可执行文件(不是自定义操作),该文件使用您想要的任何语言编写,检查RAM,如果RAM大小小于4 GB,则返回0,如果RAM大于4 GB,则返回任何其他返回码,当然,如果尚未安装SQL Server,则在这两种情况下都返回。我请丹更正他的帖子,很抱歉给您带来不便。非常感谢Bogdan,现在让它工作吧。