2017-12-27 17 views
0

UI 순서에서 모덜리스 진행률 막대를 가져 와서 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> 

답변

1

관리 진행은 InstallExecuteSequence에서에서 수행, 당신은) (MsiProcessMessage 이런 종류의 그것으로 활동 연결할 수 있습니다 곳이다됩니다 설치합니다

https://msdn.microsoft.com/en-us/library/windows/desktop/aa367525(v=vs.85).aspx

INSTALLMESSAGE_PROGRESS 메시지를 보내는 곳.

가 진행을위한 필요 일반적으로하거나 긴 UI의 순서로 사용자 지정 작업을 실행하기 때문에이 방식으로 작동

: 시스템이 UI 시퀀스 동안 변경되지 않아야

  1. 나중에 실패하거나 할 수 있습니다 설치 있기를 시스템이 변경된 채로 취소되었습니다.
  2. 자동 설치는 UI 시퀀스를 호출하지 않습니다.
  3. 전제 조건은 부트 스트 래퍼와 함께 설치해야합니다 (사용자 지정 작업 중 하나가 SQL을 설치하는 것 같습니다).
  4. 데이터베이스 또는 다른 구성을 채우는 작업은 사용자 지정 작업의 제약이 없으며 일반 사용자 환경에서 실행할 수 있고 더 쉽게 다시 실행할 수있는 설치 후 응용 프로그램이 처음 실행될 때 가장 잘 수행되는 경우가 종종 있습니다 나중에 문제가 있거나 더 많은 구성이 있습니다. 당신이있는 경우 설치하는 경우

그래서 전제 조건 (롤백 사용자 지정 작업에) 부트 스트 래퍼를 사용하여 시스템을 변경하는 경우 그들이 진행 상황을보고 할 수 있습니다 취소 할 수 지연된 사용자 지정 작업으로 실행 순서 변경 사항을 넣어 실패하거나 취소됩니다. 짧은 대답은 UI 순서에서 진행 막대를 가져올 수 없다는 것입니다.