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

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

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

Re[2]: setup.exeを実行し完了まで内部処理を待機させる


(過去ログ 113 を表示中)

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

■67057 / inTopicNo.1)  setup.exeを実行し完了まで内部処理を待機させる
  
□投稿者/ koi (1回)-(2013/06/27(Thu) 18:45:46)

分類:[VB.NET/VB2005 以降] 

2013/06/27(Thu) 19:39:26 編集(投稿者)
2013/06/27(Thu) 19:39:17 編集(投稿者)

OS:WinXP SP2
言語:Microsoft Visual Basic 2008
Ver:9.0.30729.1 SP
FW:Microsoft .NET Framework 3.5


お世話になります。(一部内容を修正します。)

VB.NETから作成したインストーラー(以後、setup.exe)ファイルを実行し
インストールが完了又は、キャンセルまで内部処理を待機させたいのですが
待機してくれません。

コードは下記のようになっています。
===============================================

Dim pro As System.Diagnostics.Process = System.Diagnostics.Process.Start(setup.exeのパス)
pro.WaitForExit() '処理完了まで待機

 ・
 ・
 ・

MessageBox.Show("処理完了")

===============================================

プロセスを見る限り、setup.exeは必要コンポーネントをインストールし
*****.msiを起動すればプロセスが消えています。

setup.exeとしての役割は正常に終わったためインストールは完了していませんが
上記のソースではメッセージが表示されるのかな?と思っています。。。。

また、調べる限り*****.msi実行とsetup.exeの違いはwindows installerの有無のみで
windows installerがインストールされる場合は、端末の再起動が必要となります。

当システムの前提条件としてwindows installerはインストールされているとありますので
setup.exeをやめ*****.msiを起動するようにすればよいかと考えたのですが
私の考えは間違っていますでしょうか??

setup.exeからでもインストール完了・キャンセルまで内部処理を待機することが可能でしょうか?

ご存知の方、もしくは思い当たることがありましたら、
ご教示お願いいたします。

引用返信 編集キー/
■67065 / inTopicNo.2)  Re[1]: setup.exeを実行し完了まで内部処理を待機させる
□投稿者/ とっちゃん (124回)-(2013/06/28(Fri) 11:42:24)
とっちゃん さんの Web サイト
No67057 (koi さん) に返信
> 2013/06/27(Thu) 19:39:26 編集(投稿者)
> 2013/06/27(Thu) 19:39:17 編集(投稿者)
>
> OS:WinXP SP2
> 言語:Microsoft Visual Basic 2008
> Ver:9.0.30729.1 SP
> FW:Microsoft .NET Framework 3.5
>
>
> お世話になります。(一部内容を修正します。)
>
> VB.NETから作成したインストーラー(以後、setup.exe)ファイルを実行し
> インストールが完了又は、キャンセルまで内部処理を待機させたいのですが
> 待機してくれません。
>
> コードは下記のようになっています。
> ===============================================
>
> Dim pro As System.Diagnostics.Process = System.Diagnostics.Process.Start(setup.exeのパス)
> pro.WaitForExit() '処理完了まで待機
>
>  ・
>  ・
>  ・
>
> MessageBox.Show("処理完了")
>
> ===============================================
>
> プロセスを見る限り、setup.exeは必要コンポーネントをインストールし
> *****.msiを起動すればプロセスが消えています。
>
> setup.exeとしての役割は正常に終わったためインストールは完了していませんが
> 上記のソースではメッセージが表示されるのかな?と思っています。。。。
>
> また、調べる限り*****.msi実行とsetup.exeの違いはwindows installerの有無のみで
> windows installerがインストールされる場合は、端末の再起動が必要となります。

setup.exe は msi を起動するまでが仕事なのでそのあとは待機しません。
なので、動作としてはあっています。

が、setup.exe は Windows Installer のインストールチェックもオプションです。
これらは必須コンポーネントと呼ばれるものを実行しているだけで
setup.exe自身は、それを実行すると何がインストールされるのか?などは
何一つ考えていません。



> 当システムの前提条件としてwindows installerはインストールされているとありますので
> setup.exeをやめ*****.msiを起動するようにすればよいかと考えたのですが
> 私の考えは間違っていますでしょうか??
>
.NET Framework もインストールされていることが保証されていますか?
されているのなら、msi を直接実行し、それを待機することも可能です。

msi の実行は、msiexec.exe(システムディレクトリに必ずインストールされている)ので
それで実行すればいいでしょう。

もう一つの手段として、自身のプロセス内でインストーラを実行するという方法もあります。
こちらは、ちょっとややこしいので、割愛しますが。



> setup.exeからでもインストール完了・キャンセルまで内部処理を待機することが可能でしょうか?

こちらも可能です。もし、.NET Framework のインストールが保証されていない場合は、
setup.exe で、Windows Installer および .NET Framework をインストールするようにしておき
そのうえで、待機アプリを実行するようなブートストラッパーを作ればOKです。

ブートストラッパーは、GenerateBootstrapper クラスを使って作成できます。
(タスクのほうではなく、クラスのほうを使う)

こちらを使って、setup.exe に、待機アプリを起動するようにしたものを作成し
そのうえで、その待機アプリから msi を直接実行して待機するようにすれば、
VB を使って待機アプリを作成しつつ、どんな環境でも必要なものを一通りインストールできる
インストーラを用意できます。
#単一ファイルにはなりませんが


引用返信 編集キー/
■67078 / inTopicNo.3)  Re[1]: setup.exeを実行し完了まで内部処理を待機させる
□投稿者/ オショウ (77回)-(2013/06/30(Sun) 14:30:31)
> setup.exeからでもインストール完了・キャンセルまで内部処理を待機することが可能でしょうか?
>
> ご存知の方、もしくは思い当たることがありましたら、
> ご教示お願いいたします。

  カスタム動作は使っていないのですか?
  ttp://dobon.net/vb/dotnet/deployment/customaction.html#installer

  できるとは思いますが。

以上。
引用返信 編集キー/
■67083 / inTopicNo.4)  Re[2]: setup.exeを実行し完了まで内部処理を待機させる
□投稿者/ koi (4回)-(2013/07/01(Mon) 14:06:16)
No67065 (とっちゃん さん) に返信
> ■No67057 (koi さん) に返信
>>2013/06/27(Thu) 19:39:26 編集(投稿者)
>>2013/06/27(Thu) 19:39:17 編集(投稿者)
>>
>>OS:WinXP SP2
>>言語:Microsoft Visual Basic 2008
>>Ver:9.0.30729.1 SP
>>FW:Microsoft .NET Framework 3.5
>>
>>
>>お世話になります。(一部内容を修正します。)
>>
>>VB.NETから作成したインストーラー(以後、setup.exe)ファイルを実行し
>>インストールが完了又は、キャンセルまで内部処理を待機させたいのですが
>>待機してくれません。
>>
>>コードは下記のようになっています。
>>===============================================
>>
>>Dim pro As System.Diagnostics.Process = System.Diagnostics.Process.Start(setup.exeのパス)
>>pro.WaitForExit() '処理完了まで待機
>>
>> ・
>> ・
>> ・
>>
>>MessageBox.Show("処理完了")
>>
>>===============================================
>>
>>プロセスを見る限り、setup.exeは必要コンポーネントをインストールし
>>*****.msiを起動すればプロセスが消えています。
>>
>>setup.exeとしての役割は正常に終わったためインストールは完了していませんが
>>上記のソースではメッセージが表示されるのかな?と思っています。。。。
>>
>>また、調べる限り*****.msi実行とsetup.exeの違いはwindows installerの有無のみで
>>windows installerがインストールされる場合は、端末の再起動が必要となります。
>
> setup.exe は msi を起動するまでが仕事なのでそのあとは待機しません。
> なので、動作としてはあっています。
>
> が、setup.exe は Windows Installer のインストールチェックもオプションです。
> これらは必須コンポーネントと呼ばれるものを実行しているだけで
> setup.exe自身は、それを実行すると何がインストールされるのか?などは
> 何一つ考えていません。
>
>
>
>>当システムの前提条件としてwindows installerはインストールされているとありますので
>>setup.exeをやめ*****.msiを起動するようにすればよいかと考えたのですが
>>私の考えは間違っていますでしょうか??
>>
> .NET Framework もインストールされていることが保証されていますか?
> されているのなら、msi を直接実行し、それを待機することも可能です。
>
> msi の実行は、msiexec.exe(システムディレクトリに必ずインストールされている)ので
> それで実行すればいいでしょう。
>
> もう一つの手段として、自身のプロセス内でインストーラを実行するという方法もあります。
> こちらは、ちょっとややこしいので、割愛しますが。
>
>
>
>>setup.exeからでもインストール完了・キャンセルまで内部処理を待機することが可能でしょうか?
>
> こちらも可能です。もし、.NET Framework のインストールが保証されていない場合は、
> setup.exe で、Windows Installer および .NET Framework をインストールするようにしておき
> そのうえで、待機アプリを実行するようなブートストラッパーを作ればOKです。
>
> ブートストラッパーは、GenerateBootstrapper クラスを使って作成できます。
> (タスクのほうではなく、クラスのほうを使う)
>
> こちらを使って、setup.exe に、待機アプリを起動するようにしたものを作成し
> そのうえで、その待機アプリから msi を直接実行して待機するようにすれば、
> VB を使って待機アプリを作成しつつ、どんな環境でも必要なものを一通りインストールできる
> インストーラを用意できます。
> #単一ファイルにはなりませんが
>

返信が遅くなりすみません。。。
.NET Framework はインストールされていることが保証されていません。

ブートストラッパーで調べると.NET Framework以外のコンポーネントもたくさんありましたねф(__;)
調査不足で申し訳ないです。

ひとつひとつ丁寧に教えて頂きありがとうございます。

今回のシステムでは、自前に決まっているインストーラでないのと必要外のコンポーネントをインストールしたくない
とのことでブートストラッパーは使用出来ませんでした。
プロセス(ユーザ:自身、イメージ名:msiexec.exe)監視を行い、不足部分は運用ルールで逃げることにしました。

が!ブートストラッパーは端末の初期設定には便利そうなので
他の場面で使用させていただきます。

ありがとうございました。


引用返信 編集キー/
■67084 / inTopicNo.5)  Re[2]: setup.exeを実行し完了まで内部処理を待機させる
□投稿者/ koi (5回)-(2013/07/01(Mon) 14:11:59)
No67078 (オショウ さん) に返信
>>setup.exeからでもインストール完了・キャンセルまで内部処理を待機することが可能でしょうか?
>>
>>ご存知の方、もしくは思い当たることがありましたら、
>>ご教示お願いいたします。
>
>   カスタム動作は使っていないのですか?
>   ttp://dobon.net/vb/dotnet/deployment/customaction.html#installer
>
>   できるとは思いますが。
>
> 以上。

返信が遅くなりすみません。
ブートストラッパーに続いてカスタム動作も初めて知りました。

VBSは何回か使用したことがあるのですが・・・
まさかインストーラ等に組み込めるとは・・・目から鱗です。。。

残念ながら決まったインストーラであれば問題なかったのですが
インストーラは可変かつこちらで作成しないためカスタム動作は使用できませんでした。

今回は、プロセス監視と運用ルールで補いたいと思います。

ありがとうございました。
解決済み
引用返信 編集キー/
■67087 / inTopicNo.6)  Re[3]: setup.exeを実行し完了まで内部処理を待機させる
□投稿者/ Azulean (177回)-(2013/07/02(Tue) 00:28:48)
念のため。

No67083 (koi さん) に返信
> .NET Framework はインストールされていることが保証されていません。

.NET Framework がインストールされていないとなると、VB.NET で作ったプログラムが動かない環境である可能性が考えられます。
このため、Setup.exe や msiexec.exe を監視するためのプログラム VB.NET で作ることはできません。


もし、「.NET Framework が入っていない環境で動く必要があり、msiexec.exe の終了を監視する必要がある」という要件であれば、アプローチの見直しが必要かと思われます。
たとえば、ランタイムやフレームワークが不要な開発言語で作るなどです。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -