如何抑制对话
How to suppress a dialog
我已将以下对话框标记为隐藏在 WiX 中,但当文件正在使用时它仍会在卸载时显示:
<Dialog Id="FilesInUse" X="50" Y="50" Width="361" Height="177" Title="[ProductName] Files in Use" Hidden="yes">
<Control Id="RetryButton" Type="PushButton" X="99" Y="150" Width="81" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}&Try Again" TabSkip="no" Default="yes">
<Publish Event="EndDialog" Value="Retry" />
</Control>
<Control Id="ContinueButton" Type="PushButton" X="186" Y="150" Width="81" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}&Continue" TabSkip="no">
<Publish Event="EndDialog" Value="Ignore" />
</Control>
<Control Id="ExitButton" Type="PushButton" X="273" Y="150" Width="81" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}E&xit Installation" TabSkip="no" Cancel="yes">
<Publish Event="EndDialog" Value="Exit" />
</Control>
<Control Id="ListFilesInUse" Type="ListBox" X="8" Y="64" Width="348" Height="62" Property="FileInUseProcess" Text="{\VSI_MS_Sans_Serif13.0_0_0}MsiFilesInUse" TabSkip="no" Sunken="yes" Sorted="yes" />
<Control Id="InstallBodyText" Type="Text" X="6" Y="9" Width="345" Height="43" Text="{\VSI_MS_Sans_Serif13.0_0_0}The following applications are using files which the installer must update. You can either close the applications and click "Try Again", or click "Continue" so that the installer continues the installation (a reboot may be required to replace these files on a restart)." TabSkip="yes" NoPrefix="yes">
<Condition Action="show"><![CDATA[REMOVE=""]]></Condition>
<Condition Action="hide"><![CDATA[REMOVE<>""]]></Condition>
</Control>
<Control Id="RemoveBodyText" Type="Text" X="6" Y="9" Width="345" Height="36" Text="{\VSI_MS_Sans_Serif13.0_0_0}The following applications are using files which the installer must remove. You can either close the applications and click "Try Again", or click "Continue" so that the installer continues the installation (a reboot may be required to replace these files on a restart)." TabSkip="yes" NoPrefix="yes">
<Condition Action="show"><![CDATA[REMOVE<>""]]></Condition>
<Condition Action="hide"><![CDATA[REMOVE=""]]></Condition>
</Control>
</Dialog>
如何取消此对话框?
注意:此对话框必须存在,否则安装程序会抛出 error 2803: dialog view did not find a record for the dialog
。我只需要不以某种方式向用户显示它,或者(如果可能的话)为他们选择一个选项。
根据 installsite 上的提示(见下文),这似乎不可能,因为这是 Windows OS 行为。根据我自己的经验,绕过此问题的另一种方法是使用自定义操作来检测 运行 进程,然后提示用户该进程是 运行,然后在卸载前关闭该应用程序。卸载应用程序时 运行 不好,它可能会留下一些文件和注册表项,除非您下次完全卸载或手动删除它们。
How do I prevent the FilesInUse Dialog from displaying?
Set the Attributes column of the Dialog table for the FilesInUse
dialog to 0.
Depending on your authoring tool, this is equivalent to marking the
dialog to be "hidden", "modeless", and "NoMinimize".
Note that this trick will only work if your setup runs with full or reduced user interface. In basic UI mode Windows Installer uses its
own built-in dialogs instead of the dialogs you authored in the msi
file.
我已将以下对话框标记为隐藏在 WiX 中,但当文件正在使用时它仍会在卸载时显示:
<Dialog Id="FilesInUse" X="50" Y="50" Width="361" Height="177" Title="[ProductName] Files in Use" Hidden="yes">
<Control Id="RetryButton" Type="PushButton" X="99" Y="150" Width="81" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}&Try Again" TabSkip="no" Default="yes">
<Publish Event="EndDialog" Value="Retry" />
</Control>
<Control Id="ContinueButton" Type="PushButton" X="186" Y="150" Width="81" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}&Continue" TabSkip="no">
<Publish Event="EndDialog" Value="Ignore" />
</Control>
<Control Id="ExitButton" Type="PushButton" X="273" Y="150" Width="81" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}E&xit Installation" TabSkip="no" Cancel="yes">
<Publish Event="EndDialog" Value="Exit" />
</Control>
<Control Id="ListFilesInUse" Type="ListBox" X="8" Y="64" Width="348" Height="62" Property="FileInUseProcess" Text="{\VSI_MS_Sans_Serif13.0_0_0}MsiFilesInUse" TabSkip="no" Sunken="yes" Sorted="yes" />
<Control Id="InstallBodyText" Type="Text" X="6" Y="9" Width="345" Height="43" Text="{\VSI_MS_Sans_Serif13.0_0_0}The following applications are using files which the installer must update. You can either close the applications and click "Try Again", or click "Continue" so that the installer continues the installation (a reboot may be required to replace these files on a restart)." TabSkip="yes" NoPrefix="yes">
<Condition Action="show"><![CDATA[REMOVE=""]]></Condition>
<Condition Action="hide"><![CDATA[REMOVE<>""]]></Condition>
</Control>
<Control Id="RemoveBodyText" Type="Text" X="6" Y="9" Width="345" Height="36" Text="{\VSI_MS_Sans_Serif13.0_0_0}The following applications are using files which the installer must remove. You can either close the applications and click "Try Again", or click "Continue" so that the installer continues the installation (a reboot may be required to replace these files on a restart)." TabSkip="yes" NoPrefix="yes">
<Condition Action="show"><![CDATA[REMOVE<>""]]></Condition>
<Condition Action="hide"><![CDATA[REMOVE=""]]></Condition>
</Control>
</Dialog>
如何取消此对话框?
注意:此对话框必须存在,否则安装程序会抛出 error 2803: dialog view did not find a record for the dialog
。我只需要不以某种方式向用户显示它,或者(如果可能的话)为他们选择一个选项。
根据 installsite 上的提示(见下文),这似乎不可能,因为这是 Windows OS 行为。根据我自己的经验,绕过此问题的另一种方法是使用自定义操作来检测 运行 进程,然后提示用户该进程是 运行,然后在卸载前关闭该应用程序。卸载应用程序时 运行 不好,它可能会留下一些文件和注册表项,除非您下次完全卸载或手动删除它们。
How do I prevent the FilesInUse Dialog from displaying?
Set the Attributes column of the Dialog table for the FilesInUse dialog to 0.
Depending on your authoring tool, this is equivalent to marking the dialog to be "hidden", "modeless", and "NoMinimize".
Note that this trick will only work if your setup runs with full or reduced user interface. In basic UI mode Windows Installer uses its own built-in dialogs instead of the dialogs you authored in the msi file.