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

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

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

Re[15]: VS2005のセットアッププロジェクトでプログラムが動かない


(過去ログ 104 を表示中)

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

■61715 / inTopicNo.1)  VS2005のセットアッププロジェクトでプログラムが動かない
  
□投稿者/ 出井美都・繰留茶渡 (3回)-(2011/08/31(Wed) 00:23:17)

分類:[.NET 全般] 

VisualStudio2005のセットアッププロジェクトでカスタム動作を設定しています。
「確定」した後にVBSを動かしたいので設定してあるのですが、全く起動してくれません・・・
どこがいけないのか全く原因がつかめません。
ちなみにそのスクリプトを直接たたくと臨んだような動作をしてくれます。
詳しい方よろしくお願いいたします。
あと気になるのがWin7のX64向けです。
管理者権限とかが無くてだめという落ちでしょうか?ちなみに「管理者権限で実行」をしても動きませんでした
引用返信 編集キー/
■61721 / inTopicNo.2)  Re[1]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ ヒークン (1回)-(2011/08/31(Wed) 12:41:31)
No61715 (出井美都・繰留茶渡 さん) に返信
> VisualStudio2005のセットアッププロジェクトでカスタム動作を設定しています。
> 「確定」した後にVBSを動かしたいので設定してあるのですが、全く起動してくれません・・・
> どこがいけないのか全く原因がつかめません。
> ちなみにそのスクリプトを直接たたくと臨んだような動作をしてくれます。

カスタム動作の設定をどのようにしているかを具体的に記載してもらえますか?
ちなみに、本当にスクリプト(VBS)が全く起動していないのでしょうか?
起動はしたものの、正しく動いていないというだけではないですよね?
ところで、そのスクリプトでは具体的にどのような処理を行っているのでしょうか?
あと、このスクリプトを、単純なもの(例えば、メッセージボックスが出るだけのもの)
に差し替えるとどうなりますか?

また、Win7のx64向けとのことですが、x86向けの同様のものはあるのでしょうか?
管理者権限はおそらく関係ないと思います。
引用返信 編集キー/
■61732 / inTopicNo.3)  Re[1]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ とっちゃん (588回)-(2011/08/31(Wed) 18:55:56)
とっちゃん さんの Web サイト
No61715 (出井美都・繰留茶渡 さん) に返信
> VisualStudio2005のセットアッププロジェクトでカスタム動作を設定しています。
> 「確定」した後にVBSを動かしたいので設定してあるのですが、全く起動してくれません・・・
> どこがいけないのか全く原因がつかめません。
> ちなみにそのスクリプトを直接たたくと臨んだような動作をしてくれます。

直接たたくとは、エクスプローラからダブルクリックすると。。。ということでしょうか?
であれば、カスタム動作(Custom Actionsで検索したほうがヒットするかもw)用のVBSとしては成立していないので
動かなくて正解です。

> 詳しい方よろしくお願いいたします。
http://msdn.microsoft.com/en-us/library/aa371538.aspx

まずは、このページをお読みください。おそらくこれくらいしかまともに書かれてるページはないと思うので。
英語なので...ということであれば、
わざわざ利用上の制約が多いVBSを利用するより、VBでカスタム動作のDLLを作ったほうがいいと思います。
そっちなら日本語で書かれてますし、VS付属のMSDNライブラリに「カスタム動作」のチュートリアルがあるので
それを見れば大体使い方はわかりますし。


> あと気になるのがWin7のX64向けです。
こちらは、何が気になるのか?がわからないと答えるのは難しいですね。
VBS の場合は、実行したいルーチンが書かれたものがただのテキストファイルなので、
呼び出すファイルからは、x86向けかx64向けかがわからないので、x64で呼び出すためのフラグがありますが
それのことを言ってるのかな?


> 管理者権限とかが無くてだめという落ちでしょうか?ちなみに「管理者権限で実行」をしても動きませんでした
おそらくこれは関係ありませんが、VSのセットアッププロジェクトはいやおうなく管理者権限で実行されるので
これが影響することもないとは言えません。
ただし、その場合管理者権限があるはずなのに。。。となるので、また状況は違ってくるのですけどねw

引用返信 編集キー/
■61768 / inTopicNo.4)  Re[2]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ 出井美都・繰留茶渡 (4回)-(2011/09/03(Sat) 16:09:05)
> ヒークン様、 とっちゃん様ありがとうございます。
自分なりに調べてみました。
VBSの内容をMsgBoxみたいにしてみたらちゃんと動くのは確認できました。

VBSそのものはプログラムをセットアップするときに一緒のフォルダに入っています。
内容としてはこんな感じです。
Set objShell = WScript.CreateObject("WScript.Shell")
fcresult = objShell.Run("abc.bat")
スクリプトと同じフォルダにバッチファイルが入っているのでカスタム動作が“確定”であればカレントディレクトリが取得できて、起動も問題ないのでは・・・???とも思いますが
なんだか雰囲気としてスクリプト自身がパスを取得できていないようにも思えてきました。

>直接たたくとは、エクスプローラからダブルクリックすると。。。
おっしゃる通りです。この場合って動かないのですか???

>VBでカスタム動作のDLLを作ったほうが
この辺の知識が全くないのですが・・・DLLを一から自分で作ってしまった方が早いということでしょうか?

引用返信 編集キー/
■61769 / inTopicNo.5)  Re[3]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ 出井美都・繰留茶渡 (5回)-(2011/09/03(Sat) 16:09:27)
No61768 (出井美都・繰留茶渡 さん) に返信
> > ヒークン様、 とっちゃん様ありがとうございます。
> 自分なりに調べてみました。
> VBSの内容をMsgBoxみたいにしてみたらちゃんと動くのは確認できました。
>
> VBSそのものはプログラムをセットアップするときに一緒のフォルダに入っています。
> 内容としてはこんな感じです。
> Set objShell = WScript.CreateObject("WScript.Shell")
> fcresult = objShell.Run("abc.bat")
> スクリプトと同じフォルダにバッチファイルが入っているのでカスタム動作が“確定”であればカレントディレクトリが取得できて、起動も問題ないのでは・・・???とも思いますが
> なんだか雰囲気としてスクリプト自身がパスを取得できていないようにも思えてきました。
>
> >直接たたくとは、エクスプローラからダブルクリックすると。。。
> おっしゃる通りです。この場合って動かないのですか???
>
> >VBでカスタム動作のDLLを作ったほうが
> この辺の知識が全くないのですが・・・DLLを一から自分で作ってしまった方が早いということでしょうか?
>
引用返信 編集キー/
■61770 / inTopicNo.6)  Re[3]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ ヒークン (2回)-(2011/09/03(Sat) 16:53:38)
No61768 (出井美都・繰留茶渡 さん) に返信

> >直接たたくとは、エクスプローラからダブルクリックすると。。。
> おっしゃる通りです。この場合って動かないのですか???

VBSの内容をMsgBox表示のものに差し替えたものが動いたのであれば、VBSとしては動いていると考えてもいいと思います。


> なんだか雰囲気としてスクリプト自身がパスを取得できていないようにも思えてきました。

カスタム動作でどのようにVBSを設定しているか分かりませんが、その可能性は高いと思います。
試しに、VBSの内容を、自身のパスをMsgBoxで表示するようなものに差し替えて確認してみてはいかがでしょう。


> >VBでカスタム動作のDLLを作ったほうが
> この辺の知識が全くないのですが・・・DLLを一から自分で作ってしまった方が早いということでしょうか?

以下のサイトを参考にすれば、カスタム動作のDLLを作成することができます。
私は、以下のサイトを参考にして、SetUpソリューションに上記カスタム動作のプロジェクトを追加して使っています。

http://dobon.net/vb/dotnet/deployment/customaction.html#installer

この方法だと、以下サイトの説明のように、カスタム動作DLLにインストール時のパラメータを簡単に渡すことができます。

http://dobon.net/vb/dotnet/deployment/customaction.html#parameters

このため、例えば、今回のケースでは"abc.bat"を起動するとの事ですが、このバッチファイルはおそらく
インストールフォルダに保存されると思いますので、カスタム動作のDLLでインストール先フォルダ情報を取得すれば
Process等で"(インストール先フォルダ)\abc.bat"を起動してあげればよいと思います。

ぜひとも湯切りに成功してください。



引用返信 編集キー/
■61786 / inTopicNo.7)  Re[4]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ とっちゃん (590回)-(2011/09/05(Mon) 17:06:49)
とっちゃん さんの Web サイト
No61770 (ヒークン さん) に返信
> ■No61768 (出井美都・繰留茶渡 さん) に返信
>
>>>直接たたくとは、エクスプローラからダブルクリックすると。。。
>>おっしゃる通りです。この場合って動かないのですか???
>
> VBSの内容をMsgBox表示のものに差し替えたものが動いたのであれば、VBSとしては動いていると考えてもいいと思います。
>
>
>>なんだか雰囲気としてスクリプト自身がパスを取得できていないようにも思えてきました。
>
> カスタム動作でどのようにVBSを設定しているか分かりませんが、その可能性は高いと思います。
> 試しに、VBSの内容を、自身のパスをMsgBoxで表示するようなものに差し替えて確認してみてはいかがでしょう。
>
エクスプローラからダブルクリックで起動した場合は、WScript.exe というモジュールがVBSを実行します。
ですが、msiから実行する場合は、このホストモジュールがmsi本体(WindowsInstallerのスクリプトエンジン)が
ホストするため、WScript オブジェクトが定義済みオブジェクトとして用意されていません。

そのため、WScript.CreateObject のような呼び出しが失敗します。
WScript の呼び出し前にMsgBox、帰ってきてからMsgBoxをそれぞれ表示するようにして
実行してみると違いが分かります。

というところを一応説明しておいて。。。

WScript.CreateObject ではなく、CreateObject 関数を使うことで、WshShellを作ることができます。

また、実行時のカレントディレクトリはどこになっているかを保証されていません。ですので
abc.bat の呼び出しをカレントディレクトリのとはせず、フルパスで設定します。

VSのセットアッププロジェクトの場合、インストール先は TARGETDIR という名前で管理されていますので
(アプリケーションのインストール先の場合、それ以外は、TARGETDIR を取り出して、パス名をつなげてください)
特別な値に格納されていますので、
set instDir = Session.TargetPath( "TARGETDIR" )
で取得ができます(最後は必ず\\がついています)。
これに実行したいファイル名の"abc.bat"を結合して、呼び出せばOKとなりますので、コード的には、

Set objShell = CreateObject("WScript.Shell")
Set instDir = Session.TargetPath( "TARGETDIR" )
fcresult = objShell.Run( instDir & "abc.bat" )

という感じに変更することで、うまく行くと思います。実験してないのでエラーになるかもしれませんが...
うまくいかない場合は、各行の手前でMsgBoxを出してみるなどで、どこで失敗してるかをチェックしてみてください。

ただし、このスクリプトは、msi専用なのでエクスプローラでダブルクリックすると100%失敗します。

引用返信 編集キー/
■61810 / inTopicNo.8)  Re[5]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ 出井美都・繰留茶渡 (6回)-(2011/09/07(Wed) 01:08:44)
お二方ともありがとうございます。
教わった通りにやってみているのですが、一部うまくいきません。
MsgBoxで出して確認しているのですが、間違っているところが不明な状態です。

Dim val
val = Session.Property("CustomActionDate")
Set objWShell = CreateObject("WScript.Shell")
MsgBox val
val = "cmd.exe / K " & val & "XYZ\abc.bat"
MsgBox val
objWShell.Run val, 0, False




と言った感じで動かしているのですがパスを見る限り問題が無く・・・
バッチをキックするところがスルーして終わってしまいます。
ちなみにvalを適当なパスにして動かすと正常にバッチはキックできました。
どうしてか謎な状態です。

引用返信 編集キー/
■61811 / inTopicNo.9)  Re[6]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ ヒークン (3回)-(2011/09/07(Wed) 05:29:29)
2011/09/07(Wed) 05:49:05 編集(投稿者)

No61810 (出井美都・繰留茶渡 さん) に返信

> Dim val
> val = Session.Property("CustomActionDate")
> Set objWShell = CreateObject("WScript.Shell")
> MsgBox val
> val = "cmd.exe / K " & val & "XYZ\abc.bat"

実際に、インストールテスト時のval = Session.Property("CustomActionDate")の値を
直書きするとどうでしょう?
あと、

val = val & "XYZ\abc.bat"

として、直接バッチファイルをRunしてみるとどうでしょう?

ところで、バッチ起動時のコマンドプロンプトを非表示にしているのに、どのような理由でcmd.exeのKスイッチを使っているのでしょうか?
(投稿された内容を見ると、スラッシュとKの間に空白があるようですが、ここに空白があるとまずいと思いますが。)
それと、動作確認のためには、バッチ起動時のコマンドプロンプトを表示するようにして内容を確認することも必要でしょう。

上記でちょっと気になる点は、上記valに空白が含まれていないかということです。
(例えば、"Program Files"のように。)
それが原因であれば、

val = "cmd.exe /K """ & val & "XYZ\abc.bat"""
のようにバッチのパスを引用符でくくれば問題は解消されるはずです。

>とっちゃんさん

WScript.CreateObjectの件、ありがとうございました。
引用返信 編集キー/
■61820 / inTopicNo.10)  Re[6]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ とっちゃん (591回)-(2011/09/07(Wed) 11:43:42)
とっちゃん さんの Web サイト
No61810 (出井美都・繰留茶渡 さん) に返信
> Dim val
> val = Session.Property("CustomActionDate")

あ!そっか、VSのセットアッププロジェクトのカスタム動作だと
Sessin.TargetPath は使えないんだ!

すいません。ディレクトリを取り出すところは、
http://msdn.microsoft.com/ja-jp/library/kyd017kk.aspx
CustomActionData(最後がeではなくaです)に
[TARGETDIR]
だけ入れておき

VBSでは、
Dim val
val = Session.Property("CustomActionData")
として取り出してください。

全体としては...
VSセットアッププロジェクト側では該当するカスタム動作の
CustomActionData プロパティに
[TARGETDIR]
といれる("や、/、\などは一切付けなくてよい)。

VBS は
--
Dim val
'CustomActionDate -> CustomActionData に修正
val = Session.Property("CustomActionData")

Set objWShell = CreateObject("WScript.Shell")
MsgBox val

'バッチファイルのパスを""でくくれるように修正
val = "cmd.exe /K """ & val & "XYZ\abc.bat"""

MsgBox val
objWShell.Run val, 0, False
--
という感じにします。
直接実行してテストする場合は、Session.Propety() の部分をコメントアウトして実行すれば
エラーにならずにテストできます。

引用返信 編集キー/
■61821 / inTopicNo.11)  Re[7]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ とっちゃん (592回)-(2011/09/07(Wed) 11:48:38)
とっちゃん さんの Web サイト
No61811 (ヒークン さん) に返信
> あと、
>
> val = val & "XYZ\abc.bat"
>
> として、直接バッチファイルをRunしてみるとどうでしょう?
>
実験してみたら、エラー終了してしまいました。


> >とっちゃんさん
>
> WScript.CreateObjectの件、ありがとうございました。
いえいえ。
これ、結構盲点みたいで、みんな一度は嵌まるんですよ。
まぁ、それ以外にもアンチウィルスがスクリプトブロックすることがあって
インストーラが意図したとおりに動かないなどもあり
個人的にもお勧めはできないんですよね。
#インストーラからバッチファイルを実行も同様

こういう部分は、きちんとデバッグができるプログラムコードで
書くほうがより安定したインストーラを提供できるので。。。

もっとも、カスタム動作をするという時点でそろそろVSセットアッププロジェクトは
卒業してほかの(WiXあるいは、IS-Pro)インストーラ作成ツールの利用を
検討してもいい時期ともいえるんですがw

実際、大半のカスタム動作は、WiXやISではインストール時の情報として設定できることがほとんどなんですよね...

引用返信 編集キー/
■61878 / inTopicNo.12)  Re[7]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ 出井美都・繰留茶渡 (7回)-(2011/09/09(Fri) 20:13:11)
お二方に度々お世話になってしまい申し訳ありません。
未だにどうしてもうまく動かないところがあります。
バッチ起動のところでこのパッケージインストーラは問題が・・・
といったメッセージが出てしまいます。

例えばなのですがBATファイルの中にちゃんとコマンドが発行できたか確認するためテキストを吐き出すようにしています。
バッチの中でパスを必要とする項目があったりするとエラーになる可能性はありえますでしょうか?

例)
SET CLASSPATH=%~dp0
echo "new" >> "%CLASSPATH%\install.log
引用返信 編集キー/
■61887 / inTopicNo.13)  Re[8]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ ヒークン (4回)-(2011/09/10(Sat) 03:18:11)
No61878 (出井美都・繰留茶渡 さん) に返信

おそらくバッチが正しく動いていないのではないのでしょうか。
まずはバッチファイルがうまく動作しているか、気になるところです。
・環境変数の設定は正しいか
・リダイレクト先のファイルパスがきちんと存在しているか、書き込み可能か
・そもそもバッチコマンドに文法上の問題はないか
 (上記例をみると、二重引用符が閉じていませんが、問題ないでしょうか?)

確認するには、バッチの実行を非表示にせず、ちゃんとコマンドプロンプトを表示して実行する必要があります。
必要に応じてバッチの最後にpauseを入れて、コマンドプロンプト内を確認できるようにする必要があるでしょう。

引用返信 編集キー/
■61888 / inTopicNo.14)  Re[9]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ ヒークン (5回)-(2011/09/10(Sat) 03:41:35)
と、思ったら、「このインストーラパッケージには問題があります・・・」というメッセージは、
もしかしたらバッチではなくvbs実行時のエラーですね。
vbsで実行エラーが出ているのならば、On Error Resume Nextにして、
あやしいと思う箇所のエラーをチェックする必要がありますね。
(例えば、Err.Numberが0でなかったらErr.DescriptionをMsgBoxで表示するなど)

vbsは、やっぱりデバッグし難いものなので、カスタム動作にはInstallerクラスを使った方がいいと思うのですが...
引用返信 編集キー/
■61921 / inTopicNo.15)  Re[10]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ とっちゃん (599回)-(2011/09/12(Mon) 18:18:02)
とっちゃん さんの Web サイト
No61888 (ヒークン さん) に返信
> と、思ったら、「このインストーラパッケージには問題があります・・・」というメッセージは、
> もしかしたらバッチではなくvbs実行時のエラーですね。
> vbsで実行エラーが出ているのならば、On Error Resume Nextにして、
> あやしいと思う箇所のエラーをチェックする必要がありますね。
> (例えば、Err.Numberが0でなかったらErr.DescriptionをMsgBoxで表示するなど)
>
> vbsは、やっぱりデバッグし難いものなので、カスタム動作にはInstallerクラスを使った方がいいと思うのですが...

こっちにぶら下げておきます。

No61820 に書いたVBSのコードは実際に動作を検証するために書き起こしたものです。
少なくとも私のWin7(x64)な環境では動作してます。<呼び出した先のバッチファイルは、ごく単純なものですが...

ただ、VBSを使った場合のデバッグは非常に面倒なので、カスタム動作にはInstallerクラスを使うことをお勧めします。
せっかくVS使ってるんだし、開発効率は圧倒的に高いですよ。

引用返信 編集キー/
■61973 / inTopicNo.16)  Re[11]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ 出井美都・繰留茶渡 (8回)-(2011/09/13(Tue) 19:29:19)
回答ありがとうございます!

>カスタム動作にはInstallerクラスを使った方がいいと思うのですが...
おっしゃるとおりです。
何を考えていたのか・・・VBSを使うことばかり頭にありました。お恥ずかしい限りです。
今は、DLLでやることに切り替えてみています。

環境変数とかは意外とサクサク作れたのですが・・・
ODBCを設定してあげるプログラムで悩んでおります・・・

SQLConfigDataSourceを使えばよいといったところまで調べることはできたのですが・・・使用例があまりにも見つからなくて
ヒントだけでもいただけるとうれしいです。本当にすみません

引用返信 編集キー/
■61990 / inTopicNo.17)  Re[12]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ とっちゃん (601回)-(2011/09/14(Wed) 14:39:40)
とっちゃん さんの Web サイト
No61973 (出井美都・繰留茶渡 さん) に返信
> おっしゃるとおりです。
> 何を考えていたのか・・・VBSを使うことばかり頭にありました。お恥ずかしい限りです。
> 今は、DLLでやることに切り替えてみています。
>
こちらは、うまくいってるということでいいのでしょうか?

> 環境変数とかは意外とサクサク作れたのですが・・・
このあたりも気にはなるのですが。。。ひとまずはおいておくとして...

> ODBCを設定してあげるプログラムで悩んでおります・・・
>
> SQLConfigDataSourceを使えばよいといったところまで調べることはできたのですが・・・使用例があまりにも見つからなくて
> ヒントだけでもいただけるとうれしいです。本当にすみません
>
えっと。。。インストーラで。。。という部分はまずは忘れてもらって
ODBC の設定をプログラム的に行う方法はわかりますか?不明ですか?
そもそも ODBC とは。。。なんて話までさかのぼる必要はないんですよね?

利用環境がわからないので何とも言えない部分が多数あります。
まずは、インストーラで使うということは抜きにして、プログラムで新規にデータベースを利用するために何をすればいいのか?
を調べてみるところから始めてはどうでしょう?

また、このODBCの接続については、当初話が出ていないので、このまま続けていても、新たに助言がもらえる可能性は低いですよ。
ですので、こちらについては改めてスレッドを用意したほうがいいと思いますよ。

引用返信 編集キー/
■62022 / inTopicNo.18)  Re[13]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ 出井美都・繰留茶渡 (9回)-(2011/09/15(Thu) 21:42:28)
お二方ともありがとうございました。
助言を頂きかなりできてきました。

ODBCについてもさらなる助言をいただいたので、活用させていただきたいと思います。
本当にありがとうございました。
このスレはいったんクローズとしたいと思います。
引用返信 編集キー/
■62023 / inTopicNo.19)  Re[14]: VS2005のセットアッププロジェクトでプログラムが動かない
□投稿者/ zakku (2回)-(2011/09/15(Thu) 21:42:41)
No62022 (出井美都・繰留茶渡 さん) に返信
> お二方ともありがとうございました。
> 助言を頂きかなりできてきました。
>
> ODBCについてもさらなる助言をいただいたので、活用させていただきたいと思います。
> 本当にありがとうございました。
> このスレはいったんクローズとしたいと思います。
解決済み
引用返信 編集キー/
■62024 / inTopicNo.20)  Re[15]: VS2005のセットアッププロジェクトでプログラムが動かない
 
□投稿者/ 出井美都・繰留茶渡 (10回)-(2011/09/15(Thu) 21:44:33)
2011/09/15(Thu) 21:45:56 編集(投稿者)

No62023 (zakku さん) に返信
> ■No62022 ( さん) に返信
>>お二方ともありがとうございました。
>>助言を頂きかなりできてきました。
>>
>>ODBCについてもさらなる助言をいただいたので、活用させていただきたいと思います。
>>本当にありがとうございました。
>>このスレはいったんクローズとしたいと思います。
解決済み
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -