┏第58号━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃         .NETプログラミング研究         ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ──<メニュー>─────────────────────── ■.NET Tips ・ユーザーインターフェイスエディタの使い方 ─────────────────────────────── ─────────────────────────────── ■.NET Tips ─────────────────────────────── ●ユーザーインターフェイスエディタの使い方 VS.NETのデプロイメントプロジェクトでは、「ユーザーインターフェ イスエディタ」を使用することにより、インストール時に表示される ウィザードダイアログのページを追加、削除、変更することができま す。 [URL]配置でのユーザー インターフェイスの管理 http://www.microsoft.com/japan/msdn/library/ja/vsintro7/html/vbcontheuserinterfaceeditor.asp ユーザーインターフェイスエディタを表示するには、ソリューション エクスプローラでデプロイメントプロジェクトを右クリックし、メニ ューの「表示」-「ユーザーインターフェイス」を選択してください。 ダイアログを追加するには、ダイアログを追加するセクションを右ク リックし、メニューの「ダイアログの追加」を選択してください。セ クションは「インストール」と「管理者インストール」の両方につき 「開始」「進行状況」「終了」の3つに分かれていますが、それぞれ に追加できるダイアログの種類は異なります。 ダイアログを追加した後は、ダイアログを適当な位置に移動します。 ドラッグ&ドロップにより、ダイアログの位置を変更することができ ます。 追加できるダイアログの種類などについては、ヘルプの「インストー ル用ユーザー インターフェイス ダイアログ ボックス」や「配置の ダイアログ ボックス」で詳しく説明されています。 [URL]インストール用ユーザー インターフェイス ダイアログ ボック ス http://www.microsoft.com/japan/msdn/library/ja/vsintro7/html/vbconinstallationuserinterfacedialogs.asp [URL]配置のダイアログ ボックス http://www.microsoft.com/japan/msdn/library/ja/vsintro7/html/vbcondeploymentdialogs.asp この内幾つかを簡単に説明します。 ・インストールフォルダ インストール先のフォルダをユーザーが選択できるようにします。選 択されたフォルダは、Windows InstallerのTARGETDIRプロパティに格 納されます。通常このダイアログは「開始」セクションの最後か、「イ ンストールの確認」ダイアログの前に置かれます。Web Setupプロジ ェクト以外で使用できます。 ・インストールアドレス インストールするWebの場所(仮想ディレクトリとポート)をユーザー が選択できるようにします。選択された仮想ディレクトリとポートは、 それぞれWindows InstallerのTARGETVDIRとPORTプロパティに格納さ れます。通常このダイアログは「開始」セクションの最後か、「イン ストールの確認」ダイアログの前に置かれます。Web Setupプロジェ クトでのみ使用できます。 ・スプラッシュ 画像を表示します。画像の大きさは横480ピクセル、縦320ピクセルで、 これ以外の大きさでは伸縮して表示されます。 ・注意事項 ユーザーに注意事項を提示します。表示するメッセージにリッチテキ ストを使用します。 ・使用許諾契約書 ユーザーに使用許諾契約書を提示し、許可を求めます。ユーザーは「同 意する」にチェックを入れなければ、次に進めなくなります。使用許 諾契約書にはリッチテキストを使用します。 ・ユーザー情報 名前、所属、シリアル番号の情報の入力をユーザーに求めます。入力 された名前、所属、シリアル番号はそれぞれWindows Installerの USERNAME、COMPANYNAME、PIDKEYプロパティに格納されます。さらに 入力された情報はレジストリのInstallPropertiesキーに書き込まれ ます(とヘルプにはありますが、実際に確認すると書き込まれていな いようでした)。具体的な使い方は、下記の「シリアル番号の入力を 促し、それが正しいか検証する」で紹介します。 ・ユーザーの登録 ユーザーが登録情報を送信できるようにするために使用します。「今 すぐ登録」ボタンをクリックすることにより、指定された実行ファイ ルが起動します。このとき、コマンドライン引数を指定することがで き、これにはWindows Installerプロパティも使用できます。具体的 な使い方は、下記の「ユーザーの登録を行う」で紹介します。 ・オプションボタン ユーザーに排他的な選択を要求するオプションボタンを表示します。 (2ボタン)、(3ボタン)、(4ボタン)の3種類あり、それぞれオプ ションボタンの数が違います。具体的な使い方は、下記の「「完全イ ンストール」か「最小インストール」を選択できるようにする」で紹 介します。 ・チェックボックス ユーザーに選択を要求するチェックボックスを最大4つ表示します。(A) (B)(C)の3種類ありますが、すべて同じです。具体的な使い方は、下 記の「デスクトップにショートカットを作成するかユーザーが選択で きるようにする」で紹介します。 ・テキストボックス ユーザーにテキスト入力を要求するテキストボックスを最大4つ表示 します。(A)(B)(C)の3種類ありますが、すべて同じです。 ユーザーインターフェイスエディタの基本的な使い方はヘルプに任せ るとして、以下にちょっとしたTipと具体例を紹介します。 ★BannerBitmapプロパティ BannerBitmapプロパティはダイアログの上部に表示する画像を指定す るもので、ほとんどのダイアログに存在するプロパティです。 BannerBitmapプロパティに指定する画像の大きさは、横500ピクセル、 縦70ピクセルとすべきで、これ以外の大きさでは伸縮されて表示され ます。また画像の左側420ピクセルはテキストによって隠れる可能性 があります。 また、BannerBitmapプロパティで使用する画像はデプロイメントプロ ジェクトに追加されている必要がありますが、画像ファイルの ExcludeプロパティをTrueにすることにより、画像ファイルを配置し ないようにできます。 [URL]BannerBitmap プロパティ http://www.microsoft.com/japan/msdn/library/ja/vsintro7/html/vxgrfbannerbitmapproperty.asp ★ダイアログの見た目をMSIファイルを実行することなく確かめる ダイアログの見た目がどのようになっているか、MSIファイルを実行 することなく、Orcaの「Dialog Preview」を使って確認することがで きます。Orcaのメニュー「Tool」にある「Dialog Preview」を選択す れば、「Dialog Preview」ダイアログが表示され、ここで選択したダ イアログを「Preview」ボタンをクリックして確認することができま す。 ★ユーザーにシリアル番号の入力を促し、それが正しいか検証する 「ユーザー情報」ダイアログを使うことにより、シリアル番号の入力 をユーザーに要求し、入力されたシリアル番号が正しいかごく簡単な 検証を行うことができます。 まず「ユーザー情報」ダイアログをユーザーインターフェイスエディ タで「開始」セクションに追加します。 次に「ユーザー情報」ダイアログのプロパティを変更します。ここで 変更するプロパティは、ShowSerialNumberとSerialNumberTemplateで す。ShowSerialNumberをTrueとすることにより、シリアル番号の入力 欄がダイアログに表示されるようになります。 どのようなシリアル番号が入力されれば正しいと判断するかを指定す るのが、SerialNumberTemplateプロパティです。 SerialNumberTemplateプロパティにはテンプレートを指定し、ここで 使用できる文字とその意味については、次に示すヘルプのページが参 考になります。 [URL]SerialNumberTemplate プロパティ http://www.microsoft.com/japan/msdn/library/ja/vsintro7/html/vxgrfserialnumbertemplateproperty.asp [URL]MaskedEdit Control http://msdn.microsoft.com/library/en-us/msi/setup/maskededit_control.asp しかし私が実際に確かめたところでは、これらのドキュメントに書か れていることと実際の動作には一部違いがありました。私が確認した SerialNumberTemplateプロパティで使用できる文字の意味を以下に示 します。これらはあくまで私が確かめた結果ですので、絶対に正しい という保障はできません。なお「検査アルゴリズムに含まれる」とい うのは、シリアル番号が正しいか検証する判断材料として使用され、 正しくなければインストールできない(次に進めない)という意味で す。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ # 検査アルゴリズムに含まれない数字の入力を必要とします。(数字以 外は入力できなくなります。) % 検査アルゴリズムに含まれる数字の入力を必要とします。すべての数 字を足した数が7で割り切れれば正しいとされます。(数字以外は入 力できなくなります。) ? 検査アルゴリズムに含まれない英数字の入力を必要とします。 ^ 検査アルゴリズムに含まれる英大文字の入力を必要とします。すべて の文字が英大文字ならば正しいとされます。 & 検査アルゴリズムに含まれる英字の入力を必要とします。すべての文 字が英字ならば正しいとされます。 ` 検査アルゴリズムに含まれない英数字の入力を必要とします。 ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ SerialNumberTemplateプロパティはデフォルトで「<###-%%%%%%%>」 となっていますが、このときは、2つのテキストボックスと、その間 に「-」が表示されます。はじめのテキストボックスには、3桁の数字 が入力されてさえいれば正しいと判断されます(ただし数字しか入力 できません)。2番目のテキストボックスには7桁の数字と、すべての 数の合計が7で割り切れることが条件となります(例えば、「7777777」 や「1111111」など)。 #や%を使ったときはユーザーが数字しか入力できなくなりますし、テ キストボックスには指定された文字数以上の文字が入力できなくなり ます。よってユーザーが正しいシリアル番号を予想するのはごく簡単 です。しかもこのテンプレートはMSIファイルのPropertyテーブル内 のPIDTemplateにそのまま書き込まれますので、これを見ればどのよ うなシリアル番号を入力すればよいか分かってしまいます。 [URL]PIDKEY Property http://msdn.microsoft.com/library/en-us/msi/setup/pidkey.asp [URL]PIDTemplate Property http://msdn.microsoft.com/library/en-us/msi/setup/pidtemplate.asp [URL]ValidateProductID Action http://msdn.microsoft.com/library/en-us/msi/setup/validateproductid_action.asp このようないい加減な方法でなく、しっかりした検証を行いたいので あれば、カスタムアクションを使うしかないでしょう。その一例が、 マイクロソフトのサポート技術情報にありますので、参考にしてくだ さい。 [URL]How To Validate a Serial Number During an Installation Created with VSI http://www.support.microsoft.com/kb/253683/ しかしインストーラだけでシリアル番号を確認するよりも、アプリケー ション自身が確認するようにした方がよいのではないでしょうか。 ★ユーザーの登録を行う 「ユーザーの登録」ダイアログを使ってユーザー登録できるようにす る簡単な例を紹介します。 まずはユーザー登録をするためのアプリケーションを作成します。こ のアプリケーションにより、起動時のコマンドライン引数により与え られたユーザー情報を登録します。 ここではHTTPのPOSTにより指定されたURL(ここでは「http: //localhost/reg.cgi」)にユーザー情報を送信する次のようなアプ リケーションを作成します。もちろん「http://localhost/reg.cgi」 にPOSTされた情報を登録するためのCGIが用意されていることが前提 です。かなりいい加減に作っていますので、参考程度にしてください。 ‥‥▽C# ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ using System; using System.Windows.Forms; namespace RegisterUser { public class RegisterUser { static void Main(string[] args) { System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis"); string postData = ""; for (int i = 0; i < args.Length; i = i + 2) { postData += args[i] + "=" + System.Web.HttpUtility.UrlEncode(args[i + 1], enc) + "&"; } byte[] postDataBytes = System.Text.Encoding.ASCII.GetBytes(postData); System.Net.HttpWebRequest req = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("http://localhost/reg.cgi"); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = postDataBytes.Length; System.IO.Stream reqStream = req.GetRequestStream(); reqStream.Write(postDataBytes, 0, postDataBytes.Length); reqStream.Close(); System.Net.HttpWebResponse res = (System.Net.HttpWebResponse) req.GetResponse(); if (res.StatusCode == System.Net.HttpStatusCode.OK) { MessageBox.Show("登録しました。"); } else { MessageBox.Show("登録に失敗しました。"); } res.Close(); } } } ‥‥△C# ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 参考. [URL]DOBON.NET .NET Tips - POSTによりファイルをダウンロードし 表示する http://dobon.net/vb/dotnet/internet/webrequestpost.html 次にユーザーインターフェイスエディタで「開始」セクションに「ユー ザー情報」ダイアログを、「終了」セクションの「完了」ダイアログ の前に「ユーザー登録」ダイアログを追加します。 「ユーザー情報」ダイアログのプロパティは、適当で結構です。また 「ユーザー登録」ダイアログのArgumentsプロパティを「USERNAME "[USERNAME]" COMPANYNAME "[COMPANYNAME]" PIDKEY "[PIDKEY]"」、 Excutableプロパティを先ほど作成したアプリケーションとします。 Argumentsプロパティで指定された[USERNAME]、[COMPANYNAME]、 [PIDKEY]は「ユーザー情報」ダイアログで入力された名前、所属、シ リアル番号に置き換わります。 これで「ユーザー登録」ダイアログの「今すぐ登録」ボタンがクリッ クされたときにアプリケーションが起動し、ユーザー登録が行われる ようになります。 ★「完全インストール」か「最小インストール」を選択できるように する ここでは、「オプションボタン」ダイアログを使った簡単な例を示し ます。 アプリケーションをインストールする際、ユーザーが完全インストー ルか最小インストールかを選択できるインストーラをよく見ますが、 このようなインストーラを作成する方法を紹介します。(「カスタム インストール」は残念ながらVS.NETだけでは無理といってよいでしょ う。) まずユーザーインターフェイスエディタで「開始」セクションに「オ プションボタン(2ボタン)」ダイアログを追加します。 次にダイアログのプロパティを設定します。ここでは次のようにプロ パティを設定します。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ BannerText インストールの種類 BodyText インストールの種類を選択してください。 Button1Label 完全インストール(すべてのファイルをインストールします。) Button1Value 1 Button2Label 最小インストール(最低限のファイルのみをインストールします。) Button2Value 2 ButtonProperty BUTTON2 DefaultValue 1 ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 次に最小インストールではインストールされず、完全インストールで のみインストールするファイルのConditionプロパティを「BUTTON2=1」 に設定します。「BUTTON2」はButtonPropertyプロパティを、「1」は 1番目のオプションボタンが選択されたことを示します。これで、1番 目のオプションボタンが選択されたときにのみこれらのファイルが配 置されるようになります。 補足.Windows Installerでは通常上記のような目的のためには Featureテーブルを使用しますが、残念ながらVS.NETではFeatureテー ブルを扱う方法が用意されていません。 ★デスクトップにショートカットを作成するかユーザーが選択できる ようにする 次に「チェックボックス」ダイアログを使った例を紹介します。ここ では、デスクトップにシュートカットを作成するかユーザーが選べる ようにする方法を紹介します。 まずユーザーインターフェイスエディタで「開始」セクションに「チ ェックボックス」ダイアログを追加します。(A)(B)(C)はすべて同じ ですので、どれを追加してもかまいません。 次に「チェックボックス」ダイアログのプロパティを設定します。こ こでは次の箇所をデフォルトから変更しました。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ BannerText オプション BodyText オプションを選択してください。 Checkbox1Label デスクトップにショートカットを作成する Checkbox1Property CHECKBOXA1 Checkbox1Value Checked Checkbox1Visible True Checkbox2Visible,Checkbox3Visible,Checkbox4Visible False ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ これでユーザーが「デスクトップにショートカットを作成する」を選 択したときにCHECKBOXA1プロパティが1となります。 後はCHECKBOXA1プロパティが1の時にデスクトップにシュートカット を作成するだけですが、これが意外と難しいです。デプロイメントプ ロジェクトの「ファイルシステムエディタ」で「ユーザーのデスクト ップ」にアプリケーションのシュートカットを作成するように設定し たとしても、ショートカットのプロパティにはConditionプロパティ がありませんし、「ユーザーのデスクトップ」のConditionプロパテ ィに「CHECKBOXA1=1」と記述しても常にショートカットが作成されて しまいます。 これを解決する方法として、2つ紹介します。 まず、デプロイメントプロジェクトにファイルを2つ追加する方法で す。例えば「app.exe」へのショートカットをデスクトップに作成す るかユーザーに選択させる場合は、デプロイメントプロジェクトに「 app.exe」を2つ追加します。そして片方のConditionプロパティを「 CHECKBOXA1=1」とし、こちらのファイルへのショートカットを「ファ イルシステムエディタ」でデスクトップに作成するようにします。た だしこの方法は同じファイルを2回追加するため、MSIファイルのサイ ズがそれだけ無駄に大きくなります。 もう一つの方法は、カスタムアクションでショートカットを作成する 方法です。この方法も簡単に紹介しておきましょう。 まずカスタムアクションとして実行する次のようなVBScriptを用意し ます。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ dim arg, args, desktop, WshShell, WshShortcut arg = Session.Property("CustomActionData") args = Split(arg, ":::") if args(1)="1" then set WshShell = CreateObject("WScript.Shell") desktop = WshShell.SpecialFolders("Desktop") set WshShortcut = WshShell.CreateShortcut(desktop & "\アプリケーション.lnk") WshShortcut.TargetPath = args(0) WshShortcut.Save end if ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ これを「カスタム動作」の「インストール」に追加し、 CustomActionDataプロパティを「[TARGETDIR]app.exe:::[CHECKBOXA1]」 とします(ここでは「app.exe」へのシュートカットを「アプリケー ション」という名前で作成しています)。(「カスタム動作」につい て詳しくは、前号をご覧ください。) この方法ではカスタムアクションでショートカットを作成しているた め、アンインストールにも(必要があればロールバックにも)カスタ ムアクションを追加して、作成したシュートカットを削除する必要が あります。 ★インストール終了後にアプリケーションを起動するか選択できるよ うにする 「チェックボックス」ダイアログを使った例をもう一つ紹介します。 インストール終了後にインストールしたアプリケーションを起動する かユーザーが選択できるようにします。同様の方法でインストール終 了後にREADMEを表示させることも可能です。 まずはVS.NETのみを使って作成してみますが、はじめに言ってしまう と、かなり妥協の産物となってしまいます。 まずはユーザーが選択できるように、ユーザーインターフェイスエデ ィタで「チェックボックス」ダイアログを「開始」セクションに作成 します。本来ならこのダイアログは最後に表示したいので「終了」セ クションに置きたいところですが、それではカスタムアクションの実 行後にダイアログが表示されることになるため、仕方がありません。 「チェックボックス」ダイアログのプロパティは次のようにします。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ BannerText アプリケーションの起動 BodyText インストールしたアプリケーションを起動するか選択してください。 Checkbox1Label インストールしたアプリケーションをインストール終了後に起動する Checkbox1Property CHECKBOXA1 Checkbox1Value Checked Checkbox1Visible True Checkbox2Visible,Checkbox3Visible,Checkbox4Visible False ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 次にカスタムアクションを作成します。ここでは次のようなVBScript を作成し、ファイルに保存します。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ dim arg, args, WshShell arg = Session.Property("CustomActionData") args = Split(arg, ":::") if args(1)="1" then set WshShell = CreateObject("WScript.Shell") WshShell.Run """" & args(0) & """" end if ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ このカスタムアクションを「カスタム動作」の「インストール」に追 加し、CustomActionDataプロパティを「[TARGETDIR]app.exe::: [CHECKBOXA1]」とします。 これでビルドすれば、終了です。ただし、カスタムアクションが実行 されるタイミングが「完了」ダイアログが表示される前になりますの で、アプリケーションが起動してもインストーラのダイアログは残っ てしまうという問題があります。 次に、改良した方法を紹介します。アプリケーションの起動を問うダ イアログを「終了」セクションに持ってきて、「完了」ダイアログの 「閉じる」ボタンがクリックされた時にアプリケーションが起動する ようにします。これには、ある程度のWindows Installerの知識が必 要ですので、分かる方のみ参考にしてください。 まずユーザーインターフェイスエディタで「チェックボックス」ダイ アログを「完了」セクションに作成します。プロパティは先ほどと同 じとします。 次にアプリケーションを起動するためのカスタムアクションを作成し ます。ここでは次のようなVBScriptを作成し、「LauncherApp.vbs」 として保存します。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ dim WshShell if Session.Property("CHECKBOXA1") then set WshShell = CreateObject("WScript.Shell") WshShell.Run """" & Session.Property("TARGETDIR") & "app.exe""" end if ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ この「LauncherApp.vbs」をデプロイメントプロジェクトに追加し、 アプリケーションフォルダに配置されるようにします。 さてここでプロジェクトをビルドし、作成されたMSIファイルをOrca で開きます。 まずはCustomActionテーブルにカスタムアクションを追加します。そ のためにFileテーブルを開いて「LauncherApp.vbs」(FileName列) のID(File列)を探します。ここでは「 _1CD4536303AE460B8EA1AAEEC78DE0F3」であったとします。 次にCustomActionテーブルを表示し、次のような新しい列を追加しま す。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ Action LauncherApp Type 22 Source _1CD4536303AE460B8EA1AAEEC78DE0F3 Target ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ なおインストールされたVBScript以外のカスタムアクションを使う場 合に指定するTypeについては、「Summary List of All Custom Action Types」をご覧ください。 [URL]Summary List of All Custom Action Types http://msdn.microsoft.com/library/en-us/msi/setup /summary_list_of_all_custom_action_types.asp 最後に「完了」ダイアログの「閉じる」ボタンのイベントを設定しま す。ControlEventテーブルを開き、次のような新しい列を追加します。 ここでFinishedFormは「完了」ダイアログを、CloseButtonは「閉じ る」ボタンを意味していますので、これらが違う場合は適当に変更し てください。 ‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ Dialog_ FinishedForm Control_ CloseButton Evant DoAction Argument LauncherApp Condition 1 Ordering 0 ‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ただし、Dialog_が「FinishedForm」、Control_が「CloseButton」、 Eventが「EndDialog」の列がすでに登録されており、Orderingが「0」 になっていると思いますので、このOrderingを「1」に変更しておい てください。 これで保存すれば完了です。 補足.Conditionを「CHECKBOXA1=1」とし、カスタムアクションではア プリケーションを起動するだけとすることもできます。 補足.ここではカスタムアクションとしてアプリケーションを起動す るスクリプトを使用しましたが、カスタムアクションにアプリケーシ ョンの実行ファイルを指定して起動することもできます。ただしこの 時はmsidbCustomActionTypeAsync + msidbCustomActionTypeContinue オプションをつけて非同期で呼び出す必要があります。 [URL]Custom Action Return Processing Options http://msdn.microsoft.com/library/en-us/msi/setup/custom_action_return_processing_options.asp ★テキストボックスに入力された文字を*で隠す 「テキストボックス」ダイアログを使ってユーザーにパスワードを入 力してもらうときなど、テキストボックスに入力された文字がそのま ま表示されては困るというケースもあるでしょう。このような場合、 テキストボックスに入力された文字を*で隠すように設定することが できますが、これはVS.NETだけでは無理で、Orcaを使わなければなり ません。 ここでは、ユーザーインターフェイスエディタで追加された「テキス トボックス」ダイアログの一番目のテキストボックスをパスワード入 力用とし、入力された文字が表示されないようにします。 まずはOrcaでMSIファイルを開き、Controlテーブルを表示し、この中 から対象となるテキストボックスを探します。ここでは、Dialog_列 が「CustomTextA」で「Control」列が「Edit1」の行がそれです。 次にこのコントロールのAttributesに msidbControlAttributesPasswordInputを追加します。具体的には、 Attributes列にある数字に2097152を足した数を新しい値とします。 通常は、2097159となるでしょう。 これで保存すれば終了です。 [URL]Password Control Attribute http://msdn.microsoft.com/library/en-us/msi/setup/password_control_attribute.asp =============================== ■ここで示したコードの多くはまずC#で書き、それを「C# to VB.NET Translator」でVB.NETのコードに変換し、修正を加えたものです。 [URL]C# to VB.NET Translator http://authors.aspalliance.com/aldotnet/examples/translate.aspx ■このマガジンの購読、購読中止、バックナンバー、説明に関しては  次のページをご覧ください。  http://www.mag2.com/m/0000104516.htm ■発行人・編集人:どぼん!  (Microsoft MVP for Visual Basic, Oct 2004-Oct 2005)  http://dobon.net  dobon_info@yahoo.co.jp ■ご質問等はメールではなく、掲示板へお願いいたします。  http://dobon.net/vb/bbs.html ■上記メールアドレスへのメールは確実に読まれる保障はありません  (スパム、ウィルス対策です)。メールは下記URLのフォームメール  から送信してください。  http://dobon.net/mail.html Copyright (c) 2003 - 2005 DOBON! All rights reserved. ===============================