特定の順序で実行する必要のある約20のアプリケーションがあります。スクリプトを作成して、リモートで実行できるようにしたいと考えています。
各アプリケーションには、Setup.exeとMSIがあります。
応答ファイルを使用してMSIを呼び出す単純なスクリプトが欲しいと思っていましたが、それを実行してから何年も経っています。ただし、応答ファイルの作成方法を覚えていません。
これは良い方法ですか?それとももっと簡単な方法がありますか?
読み込まれた質問について話します...
まず、setup.exeを無視します。おそらくMSIを呼び出すだけです。または、それらがMSIを呼び出して大量のデータを抽出する場合もあります。通常、セットアップを実行するときに一時ディレクトリを監視して、その動作を把握できます。
私はいつもだましてインストールの予行演習を行いました(msiexec /i path/to-install.msi /l*v /qn
)ログを上げてログを調べ、設定したいプロパティを選択し、コマンドラインで設定しました。応答ファイルが機能しなかった、または応答ファイルを作成するプロセスを実行するという面倒な価値がありませんでした。
それから私は InstEdit を見つけて、それをボートロードで使用しました。 MSIのプロパティを編集して、スクリプトの引数として渡すことができる変換を生成できます:msiexec /i path/to/installer.msi /t path/to/transform.mst
最初に試してみることをお勧めします。ほとんどすべてを行う無料バージョンがあります。
また、msiexec
にあるすべてのスイッチについて here を確認することもできます。
Msiexec は、必要なツールです。これには、「静かな」ものをインストールするための-qパラメータがあります。
/ qn:ユーザーインターフェイスを表示しません。
/ qb:基本的なユーザーインターフェイスを表示します。
/ qr:インストールの最後にモーダルダイアログボックスが表示される縮小されたユーザーインターフェイスを表示します。
/ qf:完全なユーザーインターフェイスを表示し、最後にモーダルダイアログボックスを表示します。
/ qn +:最後に表示されるモーダルダイアログボックスを除いて、ユーザーインターフェイスを表示しません。
/ qb +:モーダルダイアログボックスが最後に表示される基本的なユーザーインターフェイスを表示します。
/ qb-:モーダルダイアログボックスのない基本的なユーザーインターフェイスを表示します。
コマンドラインの最後に名前付きオプション(または「プロパティ」)を指定することもできます。サポートされているプロパティは、パッケージによって異なります。たとえば、次のコマンド:
msiexec /qb /l* Perl-log.txt /i ActivePerl.msi Perl_PATH=Yes Perl_EXT=Yes
... ActiveState Perlをインストールする方法です。PATHにPerl.exeを追加し、.plファイルをそれに関連付けるようにMSIパッケージに指示します。 ( ソース )
ほとんどのアプリケーションはサイレントインストールできるため、スクリプトでインストールできます。各Setup.exeには多数の潜在的なスイッチが含まれる可能性があるため、ベンダーに電話するか、Webサイトを検索する必要があります。 /?、/ h/helpスイッチを使用してセットアップを開始すると、情報を取得できる場合があります。 MSIファイルには任意の数のスイッチを含めることもできますが、この記事 MSIコマンドラインパラメーター はリストを提供します。
プロセスをスクリプト化すると、setup.exeでインストールされ、MSIのような別のファイルを起動するアプリが実行される場合があります。 MS Office XPがその一例です。これが発生すると、スクリプトは、起動したファイルが完了したと見なし、次のセットアップを開始すると失敗し、すべてが南向きになります。これを回避するには、セットアップファイルをバイパスして、コマンドラインオプションを指定して実際のインストーラー(MSIの可能性があります)に直接進みます。それが不可能な場合は、何らかのタイマーの一時停止を作成する必要があるかもしれません。私はインターネットで見つけたwait.exeと呼ばれる小さなユーティリティを使用していましたが、これを行う方法は無数にあります。ただし、スクリプトのポイントは、アプリケーションが正しくインストールされたことを識別して、次のインストールを開始できるようにすることです。