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

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

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

Re[3]: WiXにおけるリソースでない外部のファイルの実行


(過去ログ 81 を表示中)

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

■48210 / inTopicNo.1)  WiXにおけるリソースでない外部のファイルの実行
  
□投稿者/ ごぼう男 (19回)-(2010/03/27(Sat) 09:40:36)

分類:[Windows 全般] 

2010/03/27(Sat) 09:42:19 編集(投稿者)

先日はお世話になりました。
現在WiXを使用してインストーラを作成しております。WiXにおいて、インストール途中に他のファイルを
実行してなんらかの作業をさせたい場合、<Binary>タグでリソースとしてmsiファイルの中に埋め込み、
それを<CustomAction>で実行するという手法をとると思いますが、
リソースとしてmsiに埋め込まない外部のファイルを実行することは可能でしょうか。
今回、インストール途中に、msiファイルと同じディレクトリの中にある、SupportFilesディレクトリの中の、
vcredist_x86.exe(VC++2008ランタイムのインストーラ)を実行し、その間処理を待つ、ということを行おうと
思います。

<ディレクトリ構成>
Sample/SampleApp.msi
Sample/SupportFiles/vcredist_x86.exe
●SampleApp.msiの実行途中で、SupportFilesディレクトリ内のvcredist_x86.exeを実行し、その間処理を待つ。

やり方があれば、どうかご教授おねがいします。



引用返信 編集キー/
■48211 / inTopicNo.2)  Re[1]: WiXにおけるリソースでない外部のファイルの実行
□投稿者/ とっちゃん (490回)-(2010/03/27(Sat) 11:00:14)
とっちゃん さんの Web サイト
No48210 (ごぼう男 さん) に返信

> 先日はお世話になりました。
> 現在WiXを使用してインストーラを作成しております。WiXにおいて、インストール途中に他のファイルを
> 実行してなんらかの作業をさせたい場合、<Binary>タグでリソースとしてmsiファイルの中に埋め込み、
> それを<CustomAction>で実行するという手法をとると思いますが、
> リソースとしてmsiに埋め込まない外部のファイルを実行することは可能でしょうか。
> 今回、インストール途中に、msiファイルと同じディレクトリの中にある、SupportFilesディレクトリの中の、
> vcredist_x86.exe(VC++2008ランタイムのインストーラ)を実行し、その間処理を待つ、ということを行おうと
> 思います。
>
そういう呼び出しを行うカスタムアクションを作れば、不可能ではありません。

「が」

vcredist_x86(x64なども同様)は、内部でmsiを実行しますので、msi の中からは実行できません。


なので、setup.exe のような msi を実行するための「ブートストラッパー」で呼び出すようにします。
#そのために前回の質問があったのではないのですか?


ブートストラッパーは作れない!(理由は問わず)というのであれば...
VSのブートストラッパーを使うという方法があります。


Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder というクラスを使えば
ブートストラッパーを作成できます。

必須コンポーネントを設定して最終的な msi の情報を与えてやれば、VSセットアップの必須コンポーネントすべてを
取り込むこともできるブートストラッパーを作ることができます。
詳しくは、VSのヘルプ(MSDNライブラリ)を見てください。

引用返信 編集キー/
■48212 / inTopicNo.3)  Re[2]: WiXにおけるリソースでない外部のファイルの実行
□投稿者/ ごぼう男 (20回)-(2010/03/27(Sat) 13:17:32)
2010/03/27(Sat) 13:46:11 編集(投稿者)

> なので、setup.exe のような msi を実行するための「ブートストラッパー」で呼び出すようにします。
> #そのために前回の質問があったのではないのですか?

はい。実は前回の質問をするよりも少し前に、ブートストラッパーとしてdotNetInstallerを使用したものを作成し、
.NETFrameworkのチェックなどを行っていたのですが、デザインがあまり好きになれなかったのです。
それでWiXだけで作成したインストーラに、「ブートストラッパーに類似する機能」をつければ、
インストーラのデザインに統一感が出て良いと思ったのです。
前回の質問でVC++ランタイムがインストールされているか確認する手段がわかりましたので、あとはWiXのダイアログで、
VC++ランタイムがインストールされていなければそのインストーラを起動する、ということができれば問題が解決できると思い、今回の質問をしました。

>Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder というクラスを使えば
> ブートストラッパーを作成できます。

ありがとうございます。確認してみます。
引用返信 編集キー/
■48213 / inTopicNo.4)  Re[3]: WiXにおけるリソースでない外部のファイルの実行
□投稿者/ とっちゃん (491回)-(2010/03/27(Sat) 15:36:02)
とっちゃん さんの Web サイト
No48212 (ごぼう男 さん) に返信
> 2010/03/27(Sat) 13:46:11 編集(投稿者)
>
>>なので、setup.exe のような msi を実行するための「ブートストラッパー」で呼び出すようにします。
>>#そのために前回の質問があったのではないのですか?
>
> はい。実は前回の質問をするよりも少し前に、ブートストラッパーとしてdotNetInstallerを使用したものを作成し、
> .NETFrameworkのチェックなどを行っていたのですが、デザインがあまり好きになれなかったのです。
> それでWiXだけで作成したインストーラに、「ブートストラッパーに類似する機能」をつければ、
> インストーラのデザインに統一感が出て良いと思ったのです。
> 前回の質問でVC++ランタイムがインストールされているか確認する手段がわかりましたので、あとはWiXのダイアログで、
> VC++ランタイムがインストールされていなければそのインストーラを起動する、ということができれば問題が解決できると思い、今回の質問をしました。
>
こういう部分は、非常に重要なので、最初に書いてあるともっと適切な回答が得られること「も」ありますよ。


> >Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder というクラスを使えば
>>ブートストラッパーを作成できます。
>
> ありがとうございます。確認してみます。

VSのやつが作られるんですが。。。デザインが好きになれない部分かも。。。わかりませんが。


あとは、WindowsSDK(PlatformSDKでもよい)に、ブートストラッパーのサンプルソースがあります。
自分で作るのなら、これも参考になると思いますよ。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -