Lesson 8 ユーザー・インタフェイス再び

5. これが進捗ですか

成長している私たちのユーザー・インタフェイスにまだ欠けているものがあります。 インストール・プロセスがどのように進捗しているかを示すページです。

ProgressDlg

私たちはこのダイアログを モードレス であると定義します。 というのは、制御をインストーラに戻す必要があるからです。 そうやって、インストーラからダイアログに対して処理すべき進捗メッセージを送るようにします。

<Dialog Id="ProgressDlg" Width="370" Height="270"
    Title="[ProductName] [Setup]" Modeless="yes">

Back ボタンと Next ボタンはデフォルトで無効化されます — 有効にしておく理由はありません。 どっちみち、ユーザーはこれらのボタンを使うことが出来ません。 必要であれば、Cancel ボタンを使ってインストールを中止することが出来ます。

  <Control Id="Cancel" Type="PushButton"
           X="304" Y="243" Width="56" Height="17" 
           Default="yes" Cancel="yes"
           Text="[ButtonText_Cancel]">
    <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
  </Control>
  <Control Id="BannerBitmap" Type="Bitmap"
           X="0" Y="0" Width="370" Height="44"
           TabSkip="no" Text="[BannerBitmap]" />
  <Control Id="Back" Type="PushButton"
           X="180" Y="243" Width="56" Height="17" Disabled="yes"
           Text="[ButtonText_Back]" />
  <Control Id="Next" Type="PushButton"
           X="236" Y="243" Width="56" Height="17" Disabled="yes"
           Text="[ButtonText_Next]" />

プログレス・バーのすぐ上にあるテキストは ActionText イベントを予約していますので、 インストーラは現在実行しているインストールのアクション名をテキストに対して継続的に発行します。

  <Control Id="ActionText" Type="Text"
      X="70" Y="100" Width="265" Height="10">
    <Subscribe Event="ActionText" Attribute="Text" />
  </Control>

主要なステップの説明だけでは満足できず、個別のファイルが配置されるときにその詳細な情報を見たいという場合は、 ActionData イベントを代りに使うことも出来ます。

  <Control Id="ActionData" Type="Text"
      X="70" Y="100" Width="265" Height="30">
    <Subscribe Event="ActionData" Attribute="Text" />
  </Control>

興味を引かないいくつかのコントロールに加えて、最後にこのダイアログの主役である ProgressBar タイプのコントロールを追加します。 SelectionTree と同じように、インストーラによって提供されるこのコントロールは単なる標準のプログレス・バーではなくて、 インストールの過程と直接にリンクされたものです。 SetProgress イベントを Progress 属性で予約することによって、表示する進捗メッセージをインストーラから受け取り続けます。 ProgressBlocks = yes はブロック化された新しいタイプのプログレス・バーを指定しています。 これを no の設定にすると、Windows 95 時代からの古いスタイルの連続的なバーに立ち帰ります。

  <Control Id="ProgressBar" Type="ProgressBar"
      X="35" Y="115" Width="300" Height="10"
      ProgressBlocks="yes" Text="Progress done">
    <Subscribe Event="SetProgress" Attribute="Progress" />
  </Control>

  <Control Id="StatusLabel" Type="Text"
      X="35" Y="100" Width="35" Height="10"
      Text="Status:" />
</Dialog>

進捗ページをインストーラ・パッケージの残りの部分と結合するために必要なことは、 InstallDlg ダイアログを修正してこのダイアログを呼ぶようにすることだけです。 残りの作業は魔法のごとく自動的に行われます。

<Dialog Id="InstallDlg" Width="370" Height="270"
    Title="[ProductName] [Setup]" NoMinimize="yes">
  <Control Id="Install" Type="PushButton"
      X="236" Y="243" Width="56" Height="17" Default="yes"
      Text="[ButtonText_Install]">
    <Publish Event="NewDialog" Value="ProgressDlg" />
  </Control>

↑ 先頭  |  • 目次  |  « 前へ  |  次へ »  |  ∗ 原文

Table of Contents

1 始めよう

  1. ソフトウェア・パッケージ
  2. 中に入るファイル
  3. 使用に供する
  4. 便利な追加機能
  5. どこにインストールするか
  6. 条件付きインストール
  7. ファイルだけでなく
  8. 削除時の孤児化

2 ユーザー・インタフェイス

  1. 最初のステップ
  2. カスタムの設定
  3. UI の魔法
  4. 英語はわかりますか
  5. チェーンの新しい環
  6. 地域化を考える

3 イベントとアクション

  1. 列に並んで
  2. 追加のアクション
  3. 本に書かれていないこと
  4. コントロールをコントロールせよ
  5. マネージする方法
  6. 後の段階で

4 アップグレードとモジュラー化

  1. 古いのを探す
  2. 自分自身を置き換える
  3. パッチワーク
  4. 断片
  5. 融合するもの

5 Net と .NET

  1. .NET の枠組み
  2. ブートストラップ
  3. インターネットを起動する
  4. ウェブ・ディレクトリ
  5. サービスの提供

6 COM、式の構文、その他

  1. 違う色のコンポーネント
  2. 式の構文
  3. 書式指定文字列
  4. DDE 接続
  5. ディレクトリの作成
  6. 複数メディアのインストーラ
  7. プログラムの追加と削除の項目
  8. 新顔のユーザー
  9. 環境に優しく
  10. XML
  11. COM+ アプリケーション
  12. バージョンごとに

7 SQL

  1. データベースを作成する

8 ユーザー・インタフェイス再び

  1. 一つだけのダイアログ
  2. チューニング・アップ
  3. 相互作用
  4. カスタマイズがいっぱい
  5. これが進捗ですか
  6. よく出来ました
  7. 法律用語
  8. 順番外
  9. 英語はわかりませんか

9 トランスフォーム

  1. インストーラを変形する

10 標準ライブラリ

  1. カスタム・アクションとユーザー・インタフェイス
  2. お静かに願います