UI序列中的Wix进度条
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UI序列中的Wix进度条相关的知识,希望对你有一定的参考价值。
我可以在UI序列中使用无模式进度条并使用UI序列中的自定义操作更新它吗?
这是我创建的页面,没有显示对话框,也没有调用自定义操作。是否有可能做到这一点?
<Fragment>
<UI>
<!-- Progress Text To dispaly Progress Message -->
<ProgressText Action="CA_1">Doing task 1</ProgressText>
<ProgressText Action="CA_2">Doing task 2</ProgressText>
<ProgressText Action="CA_3">Doing task 3</ProgressText>
<Dialog Id="mysqlInstProgressDlg" Width="447" Height="362" Title="Mysql Progress Dialog" NoMinimize="no" Modeless="yes">
<Control Id="InstPrsTxt" Type="Text" X="67" Y="116" Width="372" Height="12" Transparent="yes">
<Text>{FONT_DESC}</Text>
<Subscribe Event="ActionText" Attribute="Text"></Subscribe>
</Control>
<Control Id="InstPrgs" Type="ProgressBar" X="30" Y="136" Width="397" Height="17" ProgressBlocks="yes" Text="Progress done">
<Subscribe Event="SetProgress" Attribute="Progress" />
</Control>
<Control Id="DownloadBtn" Type="PushButton" X="292" Y="330" Width="66" Height="21" Default="yes">
<Text>{FONT_DESC}Download</Text>
<Publish Event="DoAction" Value="CA_1" Order="1"><![CDATA[IS_SUCCEED = "true"]]></Publish>
<Publish Event="DoAction" Value="CA_2" Order="2"><![CDATA[IS_SUCCEED = "true"]]></Publish>
<Publish Event="DoAction" Value="CA_3" Order="3"><![CDATA[IS_SUCCEED = "true"]]></Publish>
<Publish Event="EndDialog" Value="Return" Order="4"><![CDATA[IS_SUCCEED = "true"]]></Publish>
<Publish Event="NewDialog" Value="ErrorDlg" Order="5"><![CDATA[(NOT Installed) AND IS_SUCCEED <> "true"]]></Publish>
</Control>
<Control Id="CancelBtn" Type="PushButton" Height="21" Width="66" X="368" Y="330" Cancel="yes" Default="yes">
<Text>{FONT_DESC}Exit</Text>
<Publish Event="DoAction" Value="InstCancelConfirm_CA" Order="1"><![CDATA[1]]></Publish>
<Publish Event="NewDialog" Value="ErrorDlg" Order="2"><![CDATA[(NOT Installed) AND IS_INTERRUPTED = "true"]]></Publish>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
UI序列:
<InstallUISequence>
<Show Dialog="InstWelcomeDlg2" Before="MysqlInstProgressDlg"><![CDATA[NOT Installed]]></Show>
<Show Dialog="MysqlInstProgressDlg" Before="ExecuteAction"><![CDATA[NOT Installed]]></Show>
</InstallUISequence>
答案
管理Windows Installer安装中的进度是在InstallExecuteSequence中完成的,您可以使用这种MsiProcessMessage()活动挂钩它:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa367525(v=vs.85).aspx
您发送INSTALLMESSAGE_PROGRESS消息的位置。
它以这种方式工作,因为在UI序列中通常不需要进度或长时间运行自定义操作:
- 在UI序列期间不应更改系统,因为安装可能会在以后失败或被取消,从而使系统发生更改。
- 静默安装不会调用UI序列。
- 应该使用引导程序安装先决条件(您的一个自定义操作似乎是安装SQL)。
- 填充数据库或其他配置的操作通常最好在应用程序首次运行安装后,您不受自定义操作的限制,可以在普通用户环境中运行,如果有问题或更容易重新运行稍后更多配置。
因此,如果您具有使用引导程序的先决条件,并且如果您要更改系统,则将这些更改作为延迟自定义操作放在执行顺序中,如果安装失败或取消,它们可以报告进度并撤消(使用回滚自定义操作)。简短的回答是,您可以在UI序列中获得类似的进度条。
以上是关于UI序列中的Wix进度条的主要内容,如果未能解决你的问题,请参考以下文章
Wix安装 - 使用Burn来管理UI并将相同的进度文本显示为内置对话框