- PR -

セットアッププロジェクトのカスタマイズ

投稿者投稿内容
MyHandle
常連さん
会議室デビュー日: 2007/04/15
投稿数: 39
投稿日時: 2007-07-19 13:07
ASP.NET2005 (VB)

セットアッププロジェクトにテキストボックス付きダイアログを
開始ノートのようこその次に追加。
ここでセットアップを試してみると、テキストボックスが空欄でも
「次へ」ボタンをクリックし次の画面へ進むことができます。

やりたいことは、
・テキストボックスは入力必須。(入力しなければインストールを中断する以外
 ないようにしたい)
・このテキストボックスに入力する文字種を検査して
 不適当な場合再入力を促す。

です。
この設定はできるのでしょうか?できるとしたらどこでできるのでしょうか?

よろしくお願いいたします。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-07-19 13:59
引用:

ハムハムさんの書き込み (2007-07-19 13:07) より:
ASP.NET2005 (VB)

セットアッププロジェクトにテキストボックス付きダイアログを
開始ノートのようこその次に追加。
ここでセットアップを試してみると、テキストボックスが空欄でも
「次へ」ボタンをクリックし次の画面へ進むことができます。

やりたいことは、
・テキストボックスは入力必須。(入力しなければインストールを中断する以外
 ないようにしたい)
・このテキストボックスに入力する文字種を検査して
 不適当な場合再入力を促す。

です。
この設定はできるのでしょうか?できるとしたらどこでできるのでしょうか?

よろしくお願いいたします。



えっと、ASP.NET でセットアッププロジェクト?Webアプリのセットアップということでしょうか?

とりあえず本題。

VSセットアッププロジェクト(msiが出力されるもの)のUIでできることは、
・ページを用意する
・表示文字列を変える
・コントロールにセットされた値を保持するプロパティ名を変える
の3つくらいしかできません(ページによって多少の違いはありますが)。

ボタン操作に何らかのアクションを持たせるには、ORCA などを利用してあとから追加するか、WiX や InstallShield などのより本格的なインストーラ作成ツールを利用するか
のいずれかになります。

ORCA でなんとかしたいということであれば、User Interface のあたりを一度お読みいただいたうえで、ボタンイベントの追加を行い、
必要に応じて検証するためのCustom Actionsを作りこんでそれを呼び出すいう作業が必要になります。

他のインストーラ作成ツールでも、ツール側のフォローがあるという点を除けば、大差ありませんが、アセンブラで開発するか、Cあるいは、VC で開発するかくらいの違いがあります。

いずれにしても、そんなに単純な話ではないということなのですけどね。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
よっし〜。
ベテラン
会議室デビュー日: 2007/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2007-07-19 21:08
インストーラクラスをオーバーライドすれば
テキストボックスの値をチェックして処理を中断することは可能です。

ただし、チェックが入るのはインストール開始後になってしまいますし
中断した場合にセットアップファイルを再度実行することになります。
(必須項目以外の設定があるのであればそれを何度も入力することになる)

「次へ」ボタン直後となるとやはり難しいかと。


http://msdn2.microsoft.com/ja-jp/library/5k10s063(VS.80).aspx

[ メッセージ編集済み 編集者: よっし〜。 編集日時 2007-07-19 21:14 ]
MyHandle
常連さん
会議室デビュー日: 2007/04/15
投稿数: 39
投稿日時: 2007-07-20 09:48

やりたいことは、 「ようこそ」の次の画面で
テキストボックス(一箇所)に値を入力してもらい、その値が適切だった
場合のみインストールを継続することができる。手入力を要するのはこの
部分のみとする。
ただし
・テキストボックスは入力必須。
 (入力しなければインストールを中断する以外ないようにしたい)
・このテキストボックスに入力する文字種を検査して
 不適当な場合再入力を促す。

セットアッププロジェクトを使わず、インストールしたいプロジェクトで
インストールクラスを追加してカスタマイズするということで実現できるの
でしょうか??


とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-07-20 11:45
引用:

ハムハムさんの書き込み (2007-07-20 09:48) より:

セットアッププロジェクトを使わず、インストールしたいプロジェクトで
インストールクラスを追加してカスタマイズするということで実現できるの
でしょうか??


いえ、違います。

よっし〜さんのおっしゃっているのは、
「今できている状態のプロジェクトに、インストーラクラスを追加して(専用のDLLやEXEでもいいし、既存のものに追加してもよい)、そこにチェックルーチンを用意することでも実現できますよ。その代わり、チェックのタイミングは、ボタンが押された時ではなく、インストールが開始されてからですが...」
ということです。

それに対し、私が提示した方法は
「ボタンが押されたときにイベントが登録できるので(WindowsInstallerの仕組みとして)、それをつかって実現できますよ。その代わり、VSではそれを組み込めないので、ORCAなどを使って、追加作業を行うか、VSセットアッププロジェクトではなく、WiXやInstalllShieldなどのインストーラ作成ツールを使って実現したほうが楽ではないの?」
ということです。さらに、私の場合は
「ボタンが押されたタイミングで、データがあるかだけではなく、そのデータが正しいかどうか(一般的には、検証とかValidateとか言います)もできますよ。その代りそのルーチンは、Custom Actions という仕組みで実現することになりますが...」
ということも書いています。

よっし〜さんの方法のほうが実現は簡単ですが、望む機能は半分だけという形になっています。
私の方法は、実現は大変ですが、望む機能はすべてという形になっています。

よっし〜さんの方法がだめというわけではありませんが、今回の場合、苦労をせざるをえない実装が要求されているともいえるので、頑張ってくれ〜ということになるんじゃないかと。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
よっし〜。
ベテラン
会議室デビュー日: 2007/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2007-07-20 17:59
とっちゃんさんお手数おかけしました。

まさしくそういうことです。
MyHandle
常連さん
会議室デビュー日: 2007/04/15
投稿数: 39
投稿日時: 2007-07-20 18:39
とっちゃん、よっし〜さん、ありがとうございます。

ためしにOrcaエディタ使ってみたのですが、こういうときはこういう書き方を・・・
というところが不明で・・・・(?_?)という感じで相当時間はまってしまいました。
書き方の例なんていうのがないものかとヘルプも開けてみたのですが。
せめて入力必須にできないかと思いあれこれ変更してみたのですが (--;

なんとか代案を考えるか、・・考えるしかなさそうです。

とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-07-20 20:25
えーっと...ORCA でやるとなると、msi の構造がわかってないと厳しいですよ。

っていうか、ここだとほかの人のフォローが期待できないので
おいらのフッターに張ってあるML来てもらったほうが...w

いずれにしても、UIをカスタマイズしたいと思った時点で
VSセットアップでは荷が重すぎると言えます(カスタマイズできませんから)。

WiXあるいは、InstallShield などのインストーラ作成ツールを利用することを
検討したほうがいいでしょう。

VSのIDEのフォローがある中でのアプリケーション作成と、
メモ帳とコマンドラインで作るアプリケーションの作成くらいの違いはありますからね。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで

スキルアップ/キャリアアップ(JOB@IT)