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,我正在寻找方法刷新当前页面后,自定义操作 我的代码 <Control Id="Config" Type="PushButton" .../> <Publish Event="DoAction" Value="SetConfiguration"></Publish> </Control> 它可以是在自定义操作之后,但我不认为会话有这样的机会,或者只是添加一些事件来控制它 编辑: 好的,我有这样的想法: <Control Id="Con

我正在寻找方法刷新当前页面后,自定义操作

我的代码

<Control Id="Config" Type="PushButton" .../>
    <Publish Event="DoAction" Value="SetConfiguration"></Publish>
</Control>
它可以是在自定义操作之后,但我不认为会话有这样的机会,或者只是添加一些事件来控制它

编辑:

好的,我有这样的想法:

<Control Id="Config" Type="PushButton" X="120" Y="243" Width="56" Height="17" Default="yes" Text="Config" >
   <Publish Event="DoAction" Value="SetConfiguration" Order="1"></Publish>
   <Condition Action="disable">EndConfig = "true"</Condition>
   <Condition Action="enable">EndConfig = "false"</Condition>
   <Publish Event="NewDialog" Value="IISconfiguration2">EndConfig="true</Publish>
</Control>
但如何在返回结果自定义acion后创建NewDialog。因为它现在在同一时间做。将顺序设置为1和2不工作。
这是MSI本机UI中的已知行为

最好的解决方法是克隆对话框,并从原始对话框转换到克隆对话框,或者从克隆到原始对话框,这样对用户来说,它看起来像同一个对话框,但实际上是一个不同的对话框,数据将被刷新

例如

在SQLDlg1上:

  <Control Id="Test" Type="PushButton" Text="&amp;Test" TabSkip="no" Default="yes" Height="17" Width="56" X="283" Y="195">
      <Publish Event="NewDialog" Value="SQLDlg2">1</Publish>
      <Publish Event="DoAction" Value="ValidateDatabase">1</Publish>
    </Control>
在SQLDlg2上:

<Control Id="Test" Type="PushButton" Text="&amp;Test" TabSkip="no" Default="yes" Height="17" Width="56" X="283" Y="195">
      <Publish Event="NewDialog" Value="SQLDlg1">1</Publish>
      <Publish Event="DoAction" Value="ValidateDatabase">1</Publish>
    </Control>
在下一个对话框中,我还清除了属性,以防他们单击“上一步”

<Publish Dialog="VerifyReadyDlg" Control="Back" Property="DatabaseValid" Value="{}">1</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SQLDlg">1</Publish>

这是MSI本机UI中的已知行为

最好的解决方法是克隆对话框,并从原始对话框转换到克隆对话框,或者从克隆到原始对话框,这样对用户来说,它看起来像同一个对话框,但实际上是一个不同的对话框,数据将被刷新

例如

在SQLDlg1上:

  <Control Id="Test" Type="PushButton" Text="&amp;Test" TabSkip="no" Default="yes" Height="17" Width="56" X="283" Y="195">
      <Publish Event="NewDialog" Value="SQLDlg2">1</Publish>
      <Publish Event="DoAction" Value="ValidateDatabase">1</Publish>
    </Control>
在SQLDlg2上:

<Control Id="Test" Type="PushButton" Text="&amp;Test" TabSkip="no" Default="yes" Height="17" Width="56" X="283" Y="195">
      <Publish Event="NewDialog" Value="SQLDlg1">1</Publish>
      <Publish Event="DoAction" Value="ValidateDatabase">1</Publish>
    </Control>
在下一个对话框中,我还清除了属性,以防他们单击“上一步”

<Publish Dialog="VerifyReadyDlg" Control="Back" Property="DatabaseValid" Value="{}">1</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SQLDlg">1</Publish>
试试这个

<Control Id="Config" Type="PushButton" X="120" Y="243" Width="56" Height="17" Default="yes" Text="Config" >
    <Publish Event="DoAction" Value="SetConfiguration">1</Publish>
    <Condition Action="disable">EndConfig = "true"</Condition>
    <Condition Action="enable">EndConfig = "false"</Condition>
    <Publish Event="NewDialog" Value="IISconfiguration2">2</Publish>
</Control>
试试这个

<Control Id="Config" Type="PushButton" X="120" Y="243" Width="56" Height="17" Default="yes" Text="Config" >
    <Publish Event="DoAction" Value="SetConfiguration">1</Publish>
    <Condition Action="disable">EndConfig = "true"</Condition>
    <Condition Action="enable">EndConfig = "false"</Condition>
    <Publish Event="NewDialog" Value="IISconfiguration2">2</Publish>
</Control>

添加。这是一个例子。或者,制作一个用于完整对话框事件的GUI。最后是一个链接。@SteinÅsmul我不是为bootstrapper做的。我在自定义操作中更改特定的配置内容,将结果分配给属性,并将按钮的值更改为启用/禁用。只有当我返回到上一张卡并重新启动当前卡时,更改才会可见。我正在尝试添加其他对话框,但我的自定义操作所花的时间比转换到下一张卡所花的时间要长,这意味着数据只会在稍后刷新,并且看不到任何更改。可以让你睡一会儿吗?或者等待,例如,某些属性值将为真?能否将操作移动到应用程序启动?通常情况下,编码和测试会更好、更容易处理。我的真实示例是一个带有数据库[TEST]连接按钮的对话框。单击该按钮会导致控件事件触发自定义操作,以更新对话框上的属性。在该自定义操作完成后,另一个控件事件将我转换到“复制”对话框,然后显示结果。再次测试做同样的事情,但现在我进入第一个对话框。添加。这是一个例子。或者,制作一个用于完整对话框事件的GUI。最后是一个链接。@SteinÅsmul我不是为bootstrapper做的。我在自定义操作中更改特定的配置内容,将结果分配给属性,并将按钮的值更改为启用/禁用。只有当我返回到上一张卡并重新启动当前卡时,更改才会可见。我正在尝试添加其他对话框,但我的自定义操作所花的时间比转换到下一张卡所花的时间要长,这意味着数据只会在稍后刷新,并且看不到任何更改。可以让你睡一会儿吗?或者等待,例如,某些属性值将为真?能否将操作移动到应用程序启动?通常情况下,编码和测试会更好、更容易处理。我的真实示例是一个带有数据库[TEST]连接按钮的对话框。单击该按钮会导致控件事件触发自定义操作,以更新对话框上的属性。在该自定义操作完成后,另一个控件事件将我转换到“复制”对话框,然后显示结果。再次测试做同样的事情,但现在我进入第一个对话框。