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_Custom Action - Fatal编程技术网

如何在wix中复制文件后调用自定义操作

如何在wix中复制文件后调用自定义操作,wix,custom-action,Wix,Custom Action,我想在文件复制到目标文件夹后执行自定义操作 在自定义操作中,我运行复制的脚本文件,因此找不到错误文件 <CustomAction Id="RunDBScript" BinaryKey="CA" DllEntry="RunDBScript" Execute=" immediate" Return="check" /> <Custom Action="RunDBScr

我想在文件复制到目标文件夹后执行自定义操作

在自定义操作中,我运行复制的脚本文件,因此找不到错误文件

<CustomAction Id="RunDBScript"
              BinaryKey="CA"
              DllEntry="RunDBScript"
              Execute=" immediate"
              Return="check" />


<Custom Action="RunDBScript" After="InstallFiles">
    <![CDATA[NOT Installed]]>
  </Custom>

此自定义操作导致找不到错误文件/目录。因此,此操作在文件复制之前调用

那么,如何在文件复制后调用自定义操作呢


我不明白为什么在InstallFiles之前调用此自定义操作,即使我是在“InstallFiles”之后指定的。这是InstallExecuteSequence中唯一可以在安装产品文件后立即执行操作的位置。

使用延迟自定义操作时,必须通过session.CustomActionData[“propertyname”]访问值

会话字典值只能由正在编写执行脚本的即时自定义操作读取

延迟的自定义操作在脚本运行时执行,因此项目属性不再可用。 要使用它,必须实现双重自定义操作,以便为真正的自定义操作提供所需的属性

请遵循下面的示例:

<CustomAction Id="CustomActionID_Data" Property="CustomActionID" Value="INSTALLDIR=[INSTALLDIR];OTHERPROPERTY=[OTHERPRPJECTPROPERTY]"></CustomAction>
<CustomAction Id="CustomActionID" BinaryKey="FILEBINARYID" DllEntry="METHODNAMEATCUSTOMACTION" Execute="deferred"></CustomAction>

在本例中,您需要在InstallExecutionSequence调用自定义操作“\u Data”,然后调用实际操作,这样第一个“\u Data”将调用所需的属性。然后,您可以使用session.CustomActionData[“”]访问代码中的这些属性

作为补充,下面是一个如何在InstallExecuteSequence调用自定义操作的示例

<Custom Action="CustomActionID_Data" After="InstallFiles">NOT (REMOVE="ALL")</Custom>
<Custom Action="CustomActionID" After="CustomActionID_Data">NOT (REMOVE="ALL")</Custom>
NOT(REMOVE=“ALL”)
非(删除=“全部”)

使您的CA延迟:
Execute=“deferred”
如果我使用Execute=“deferred”,那么请告诉我错误:“无法从非即时自定义操作访问会话详细信息”您是如何解决问题的?我不知道您的第一句话,您是否可以添加一些详细信息?我的经验是,文件在安装完成后才被复制。我创建了一个自定义操作来检查文件是否存在。使用InstallFinalize设置了自定义操作,但该文件不存在。也可以在AppSearch之后在InstallUISequence中立即执行自定义操作