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
Wix安装程序-我可以按部件执行启动条件吗?_Wix_Windows Installer_Wix3.10_Wix3.11 - Fatal编程技术网

Wix安装程序-我可以按部件执行启动条件吗?

Wix安装程序-我可以按部件执行启动条件吗?,wix,windows-installer,wix3.10,wix3.11,Wix,Windows Installer,Wix3.10,Wix3.11,我正在使用WIX3.10。我有一个特定的场景,在启动条件之前会发生一些自定义操作,因为在启动条件期间,我会评估在这些自定义操作期间设置的某些属性。但是,在启动条件下,我还必须检查.Net framework的版本。问题是,如果我没有所需的.Net Framework,自定义操作将在达到启动条件之前执行,并且消息不会显示给用户 我是否可以按特定顺序执行启动条件,或者我是否必须更改自定义操作以在启动条件后执行?我需要帮助。不是WiX方面的专家 参考代码: <!--Need to execute

我正在使用WIX3.10。我有一个特定的场景,在启动条件之前会发生一些自定义操作,因为在启动条件期间,我会评估在这些自定义操作期间设置的某些属性。但是,在启动条件下,我还必须检查.Net framework的版本。问题是,如果我没有所需的.Net Framework,自定义操作将在达到启动条件之前执行,并且消息不会显示给用户

我是否可以按特定顺序执行启动条件,或者我是否必须更改自定义操作以在启动条件后执行?我需要帮助。不是WiX方面的专家

参考代码:

<!--Need to execute this first-->
    <PropertyRef Id="NETFRAMEWORK35" />
      <PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" />
      <Condition Message="This application requires .NET Framework 4.6. Please install the .NET Framework then run this installer again.">
        <![CDATA[Installed OR (NETFRAMEWORK35 = "#1" AND WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED)]]>
      </Condition>

<!--Need to execute this second.  It is execute first through custom action-->
      <PropertyRef Id="SQLSERVERMISSINGREQUIREDSERVICES"/>
      <Condition Message="Please install the following SQL Server services for the SQL Server instance: [SQLSERVERMISSINGREQUIREDSERVICES]. Then run this installer again.">
        <![CDATA[Installed or NOT SQLSERVERMISSINGREQUIREDSERVICES]]>
      </Condition>

<!--Need to execute this third. It is execute second through custom action-->
      <PropertyRef Id="SQLSERVERMAJORVERSION"/>
      <PropertyRef Id="SQLSERVERMINORVERSION" />
      <Condition Message="The GSL server requires a 2008 R2, 2012, or 2014 instance named 'GSLSQL' to be installed on the local server.">
        <![CDATA[Installed OR (SQLSERVERMAJORVERSION = "#10" AND SQLSERVERMINORVERSION >= "#50") OR SQLSERVERMAJORVERSION = "#11" OR SQLSERVERMAJORVERSION = "#12"]]>
      </Condition>

=“#50”)或SQLSERVERMAJORVERSION=“#11”或SQLSERVERMAJORVERSION=“#12”]>

按照LaunchCondition文档中的建议,对此类条件进行排序的一般方法是将启动条件替换为19类自定义操作。这与错误表中描述错误的错误消息一起使用,CA本身以属性值为条件

按照LaunchCondition文档中的建议,对此类条件进行排序的一般方法是将启动条件替换为19类自定义操作。这与错误表中描述错误的错误消息一起使用,CA本身以属性值为条件

自定义操作是否由代码管理?(.NET)。我没有测试,但是上面的条件似乎要求安装.NET3.5,或者安装失败-即使存在.NET4.6。这意味着要使用您的应用程序,必须同时安装.NET 3.5和.NET 4.6?这样行吗?如果Phil的建议对你不起作用,那么你可能不得不用C++或ActudiScript自定义操作来实现自定义检查——以避免.NETFramework丢失时的失败。自定义操作在启动条件之前执行。它们位于一个单独的DLL中,作为安装程序项目中的引用包含在其中。因此,我怀疑当安装程序执行时,目标机器没有安装.NETFramework,DLL无法加载,导致安装程序过早结束。因此,我提到C++和ActudieScript(VBScript,JavaScript)自定义操作。它们通常会在所有情况下运行,尽管脚本操作是不受欢迎的。我容忍他们不做系统更改,只进行检查——特别是为了避免.NET运行时依赖性。您需要对这些脚本自定义操作进行大量测试、错误控制和错误抑制,以使它们不会造成问题。谢谢…从今天起,客户端更改了我任务的要求…因此现在我必须将.Net Framework与安装捆绑在一起。这是非常常见的要求。IMHO将.NET framework捆绑在一起的做法越来越不明智,因为它很快就会过时,因为现在整个运行时都通过Windows Update安装了修补程序。(底部-“首选下载”)。但是,只要实现客户机要求的东西就行了——很明显,自定义操作是由代码管理的吗?(.NET)。我没有测试,但是上面的条件似乎要求安装.NET3.5,或者安装失败-即使存在.NET4.6。这意味着要使用您的应用程序,必须同时安装.NET 3.5和.NET 4.6?这样行吗?如果Phil的建议对你不起作用,那么你可能不得不用C++或ActudiScript自定义操作来实现自定义检查——以避免.NETFramework丢失时的失败。自定义操作在启动条件之前执行。它们位于一个单独的DLL中,作为安装程序项目中的引用包含在其中。因此,我怀疑当安装程序执行时,目标机器没有安装.NETFramework,DLL无法加载,导致安装程序过早结束。因此,我提到C++和ActudieScript(VBScript,JavaScript)自定义操作。它们通常会在所有情况下运行,尽管脚本操作是不受欢迎的。我容忍他们不做系统更改,只进行检查——特别是为了避免.NET运行时依赖性。您需要对这些脚本自定义操作进行大量测试、错误控制和错误抑制,以使它们不会造成问题。谢谢…从今天起,客户端更改了我任务的要求…因此现在我必须将.Net Framework与安装捆绑在一起。这是非常常见的要求。IMHO将.NET framework捆绑在一起的做法越来越不明智,因为它很快就会过时,因为现在整个运行时都通过Windows Update安装了修补程序。(底部-“首选下载”)。但是,很明显,只要实现客户的要求就行了。