プロが教える店舗&オフィスのセキュリティ対策術

アプリケーションの自動インストールのバッチファイルを作りたいのですが、いくつかわからないことがあるのでどなたか教えて頂けないでしょうか?まず自動化したい処理は
1. Setup.exeを起動する
2. インストーラダイアログボックス内のNext(次へ),Back,キャンセル等ボタンを押すのを自動化する。ALT+N みたいなのを自動化したいです。
3. アプリケーションのリソースdiscが3枚あるので、dick1(setup.exeが入ってる)のインストールが終わったら、disc2をブラウズするように聞いてくるのでバッチファイルでパス名を指定して自動で開かせる、おなじくdisc3も処理させる。

以上です。当方初心者なものでして、1はできたのですが、2からできませんでした。いろいろ調べては見たのですが回答を見つけること出来ず。。。お手数ですがどなたか教えてください。どうかよろしくお願いします。

A 回答 (5件)

こんにちは。



ANo.3 の回答にある UWSC で No.1, 2, 3 のいずれもスクリプトによる自動化が可能です。

類似のオペレーションを UWSC で自動化したスクリプト例をお見せしますので雰囲気を感じてもらえれば幸いです。

(スクリプトの動作概要)

タスクを一件登録します。ログイン時に notepad.exe を起動するタスク「タスク Notepad 起動」を作成登録します。

(コメント)

★1 実行の経過を確認しながら進めるときは true を設定
★2 起動時の実行ユーザのパスワード情報を設定
★3 質問者の No.1 のコーディング例
★4 質問者の No.2 のコーディング例
★5 質問者の No.3 のコーディング例

(スクリプト)
const _debug = false // ★1 false → true (経過をダイアログ表示)

dim wid
dim waits = 0.1
dim pw = "パスワード" // ★2 パスワードを設定する

confirm("タスクを開きます...")
wid = EXEC("explorer.exe ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}") // ★3

confirm("タスクウィザードを開きます...")

CLKITEM(wid, "スケジュールされたタスクの追加", CLK_DBLCLK)
SLEEP(waits)

wid = GETID("タスク ウィザード", "#32770")
CLKITEM(wid, "次へ", CLK_BTN or CLK_SHORT) // ★4

confirm("参照から Notepad を選択します...")
while CHKBTN(wid, "参照") = -1
SLEEP(waits)
wend
CLKITEM(wid, "参照", CLK_BTN or CLK_SHORT)
SLEEP(waits)

wid = GETID("実行するプログラムを選択してください", "#32770")
SENDSTR(wid, "c:\windows\system32\notepad.exe") // ★5
SLEEP(waits)

CLKITEM(wid, "開く", CLK_BTN or CLK_SHORT)
SLEEP(waits)

confirm("スケジュール設定を行います...")
wid = GETID("タスク ウィザード", "#32770")
SLEEP(waits)

SENDSTR(wid, "タスク Notepad 起動")
SLEEP(waits)
CLKITEM(wid, "ログオン時", CLK_BTN or CLK_SHORT)
SLEEP(waits)
CLKITEM(wid, "次へ", CLK_BTN or CLK_SHORT)
SLEEP(waits)

confirm("認証情報を設定します...")
SENDSTR(wid, pw, 2)
SLEEP(waits)
SENDSTR(wid, pw, 3)
SLEEP(waits)

CLKITEM(wid, "次へ", CLK_BTN or CLK_SHORT)
SLEEP(waits)

confirm("終了しました (Exiting...)")

CLKITEM(wid, "完了", CLK_BTN)
SLEEP(waits)

procedure confirm(s)
  if _debug then MSGBOX(s, BTN_YES, 10, 10)
fend
    • good
    • 2

No.2です。



VBSを実行したらノートンが反応してしまいましたか。うちのウイルスバスターは反応しないので、ノートンは厳しいのですね。

Setup.exeがサイレントインストールに対応しているのなら手っ取り早いです。サイレントモードでの実行方法はアプリごとに異なるので、どうしたらいいかは調べていただくしかないですが、下記のURLに何かヒントがあるかもしれません。

http://www.geocities.jp/hxbsrejoh/

ここの一覧にないアプリでも、InstallShieldなど、汎用のインストーラ作成ソフトでSetup.exeが作られているのなら、このURLの下の方に書いてある方法でサイレントインストールができるかもしれません。
    • good
    • 0

手っ取り早くやりたいなら、操作自動化ソフトがいいと思います。


UWSCがおすすめです。
http://www.vector.co.jp/soft/win95/util/se115105 …
    • good
    • 0
この回答へのお礼

情報ありがとうございます!!なるほど、こういう便利なものがあるのですね!でもこれって他の人のPCでも同じように実行できるのでしょうか?環境が違うPC上でもちゃんと動作させたいものでして。

お礼日時:2007/03/12 19:39

WSHのSendKeysを使えばできないでしょうか?


下記のURLの例ではメモ帳を起動していろいろやってますが、notepade.exeでなくSetup.exeを起動して、その後のキー操作をSendKeysで記述すればいいかもしれません。ダイアログの表示を待つ例も載っています。

http://www.atmarkit.co.jp/fwin2k/operation/wsh05 …

WSHを使うのがはじめてであれば、サンプルをとりあえずコピーしてtest.vbsのように拡張子vbsをつけて保存し、そのまま実行すればいいでしょう。バッチから呼び出すなら、
cscript test.vbs
などと書けばいです。

もっともNo.1の方の仰る通り、ユーザが途中で何か操作をしてしまえばだいなしなので、完璧とはいきませんが。
    • good
    • 0
この回答へのお礼

情報ありがとうございます。今日職場の人に聞いたらScriptitなるものがあって、これに近い感じでした。詳しいやり方はわかりませんが。あと、このサイトのスクリプトを拡張子VBSで実行するとノートンがウイルス検知してしまいました。アプリの自動化を自分の友達に使いたいので、できるばノートンが起動しない方法が好ましいのですが。自分のPCだとノートンで許可しちゃうばそれでOKなのですけど。

それとインストールしたいアプリのSetup.exe /?でオプションを確認して、サイレントモード??みたいなのがあって、それを使うと簡単に自動インストールするとも聞いたのですがそうなんでしょうか??

とにかくすごく参考になりました。いろいろ模索してみたいと思います。

お礼日時:2007/03/12 19:37

そうなんですよね。


自動、複数アプリケーションインストーラ作りたいですよね。
私も簡単な作り方があれば知りたいです。ホント。

しかし。
実際の話、インストーラの…といいますか。
Aアプリケーション(バッチ)から、Bアプリケーションの「画面を」
直接操作させることは、VBなどでいうKey押下情報のSendだけでは
不十分です。これはユーザが変な画面操作を割り込みで行うと
バッチ側の制御が破たんするからです。

そこで。技術的には。
Aアプリケーション(バッチ)はBアプリケーションを同期起動する
とともに、BアプリケーションのWindowsハンドルを取得し、かつ、
ボタンのコントロール名かIDで制御することが必要なのでして。
…高度というか、面倒くさいCプログラミングをゴリゴリ書くことが
必要だと思います。

私の場合は、そこまで作るのが面倒ですので。
インストーラを利用せず、全部バッチでがっさりコピーし、
レジストリをいじる様な一括バラバラコピーバッチを利用するか、
Shellメニューを作ることで逃げています。

私もいいやり方があれば教えてほしいですね。

この回答への補足

yama-takuさん、早い回答ありがとうございます!!

>えっと、Aアプリケーション(バッチ)から、Bアプリケーションの「画面を」直接操作させることは、VBなどでいうKey押下情報のSendだけでは不十分です

とありますが、職場の人はこれでやってた気がします。これだと一応バッチファイルだけで可能なんですか?VBはよくわからないので。。。
もしこのやり方で可能ならば、できたら教えて頂いてよろしいでしょうか?

お手数かけて本当にすいませんです。

補足日時:2007/03/11 14:59
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!