C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: インストーラ(msi)の画面にコンボボックスを追加したい


(過去ログ 119 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■69803 / inTopicNo.1)  インストーラ(msi)の画面にコンボボックスを追加したい
  
□投稿者/ ランス (1回)-(2014/01/30(Thu) 12:58:09)

分類:[インストーラ全般] 

分からないことを検索すると、いつもこのサイトの記事にたどり着き、大変助かっております。

さて、Visual Studio 2008を使い、C#で作成したアプリを配布していますが、
アプリ側で参照するレジストリの値をmsiファイルに埋め込み
(具体的には、Orcaを使い、Propertyテーブルに新規プロパティを追加)
これをセットアッププロジェクトのカスタム動作で処理していました。

ただ、インストーラー画面上で、ユーザーがコンボボックスやリストボックスで
この値を選択できれば便利だなと思いました。

そこで質問なのですが、msiファイルの任意の画面上にコンボボックスと
その要素を追加するにはどうすればよいでしょうか?
コンボボックスの値をカスタム動作で参照する方法等については別途検討
したいと思いますが、とりあえず、コンボボックスと要素の表示方法を
知りたく存じます。

英語は苦手ですが、英語のチュートリアルでも結構ですので、参考になる
サイトがございましたらご教示頂きたく、よろしくお願い申し上げます。
引用返信 編集キー/
■69806 / inTopicNo.2)  Re[1]: インストーラ(msi)の画面にコンボボックスを追加したい
□投稿者/ とっちゃん (192回)-(2014/01/30(Thu) 18:06:29)
とっちゃん さんの Web サイト
No69803 (ランス さん) に返信
> さて、Visual Studio 2008を使い、C#で作成したアプリを配布していますが、
> アプリ側で参照するレジストリの値をmsiファイルに埋め込み
> (具体的には、Orcaを使い、Propertyテーブルに新規プロパティを追加)
> これをセットアッププロジェクトのカスタム動作で処理していました。
>
> ただ、インストーラー画面上で、ユーザーがコンボボックスやリストボックスで
> この値を選択できれば便利だなと思いました。
>
> そこで質問なのですが、msiファイルの任意の画面上にコンボボックスと
> その要素を追加するにはどうすればよいでしょうか?
> コンボボックスの値をカスタム動作で参照する方法等については別途検討
> したいと思いますが、とりあえず、コンボボックスと要素の表示方法を
> 知りたく存じます。
>
VSセットアッププロジェクト(vdproj)は、あらかじめ用意されているダイアログを
張り付けたり順序を変更したりすることはできますが、それ以外のUI要素を追加したり
ということができません。

そのため、別途ダイアログごと用意するか、既存のダイアログの空き領域に合わせて
コンボを埋め込むかのどちらかになると思いますが、どちらの場合もORCAで直接操作は
あまり現実的ではないと思います。

プロパティテーブルに1行追加するのもビルドごとに行わなければなりませんよね?
それと同じようなことを、複数のテーブルに多数追加することになりますが問題ありませんか?


さて、コンボボックスですが、残念ながら、ORCAで編集というようなサンプルやチュートリアルは
0とは言いませんが、ほとんどないと思います。

構築そのものが可能なツールで利用できる範囲を逸脱する場合、別のツールを使って作成するのが
MSIの世界での主流なので今回の場合は、UIの作成が可能なツールに乗り換えるのが
一番現実的だと思われます。

乗り換えるとしたら、WiXかInstallShield(UIの作成を伴うのでPro版以上)を選択することになると思います。



ただ、乗り換えるといってもすぐにできるというものでもないので、WiXではありますがサンプルチックな
コード片を見つけたので、張り付けておきます(コンパイルは通せる程度に修正していますがこれがそのまま使える気がしません...)

<Dialog ...>
<Control Id="languageCombo" Type="ComboBox" Property="LANGUAGELIST"
Width="84" Height="16" X="30" Y="244" ComboList="yes" RightToLeft="yes">
<ComboBox Property="LANGUAGELIST">
<ListItem Text="English" Value="1033" />
<ListItem Text="Spanish" Value="3082" />
<ListItem Text="Japanese" Value="1041" />
</ComboBox>
</Control>
</Dialog>
<!--デフォルト値-->
<Property Id="LANGUAGELIST" Value="1033" />

ORCAで直接的に埋め込むための資料として2か所リンクを張っておきます。

ComboBox コントロールをダイアログにセットするには、
Control Table に、ComboBox コントロールの情報を配置します。
ComboBox コントロールのリファレンスは
http://msdn.microsoft.com/en-us/library/aa367871.aspx
です。

ComboBoxの各アイテムは、ComboBox Table に配置します。
ComboBox Tableのリファレンスは
http://msdn.microsoft.com/en-us/library/aa367872.aspx
です。

実際に使っているmsiを探してみるのが一番いいサンプルになると思います。
私は見たことがありませんが。。。

引用返信 編集キー/
■69831 / inTopicNo.3)  Re[2]: インストーラ(msi)の画面にコンボボックスを追加したい
□投稿者/ ランス (2回)-(2014/01/31(Fri) 16:06:19)
とっちゃん 様、ありがとうございました。
今回検討したのは趣味の範囲のものなので、積極的な乗換の検討には至っておりません。
それでも、勉強のため、教えて頂いたサイトを参考にさせて頂きます。
ありがとうございました。
解決済み
引用返信 編集キー/
■69836 / inTopicNo.4)  Re[3]: インストーラ(msi)の画面にコンボボックスを追加したい
□投稿者/ とっちゃん (193回)-(2014/01/31(Fri) 18:03:20)
とっちゃん さんの Web サイト
No69831 (ランス さん) に返信

もう見てないかもしれませんが...

> 今回検討したのは趣味の範囲のものなので、積極的な乗換の検討には至っておりません。

趣味の範囲であれば、コンボの利用はお勧めしませんが、究めるという意味での趣味の範囲なら
とことんまでやってみるのはありだと思いますよ。
#そのために乗り換える必要もない


ま、それはともかくとして、VS2012からVSのセットアッププロジェクト(.vdproj形式のもの)はなくなりました。

そのため、今後開発環境を乗り換えるということになった場合(今回のこととは別です)
ClickOnceを利用する(セットアッププロジェクトとはそもそもの性格から異なる)か
WiX または InstallShield(LimitedEdition という無償のものもありますが、UIの編集機能はありません)に
乗り換えが必須となります。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -