MSIパッケージのインストールとアンインストールを高速化するにはどうすればよいですか?


14

Windowsインストーラーパッケージ、またはMSIファイルが呼び出されたときにそれらをインストールおよびアンインストールすると、インストールの進行が他のインストールパッケージより大幅に遅く表示されます。

なぜこれが当てはまるのでしょうか?そして、物事をスピードアップするために私は何ができますか?


1
ご存知のように、展開の世界からシステム管理の世界への実践的および技術的なアドバイスを提供しようとすることに、即座に反対票を投じています。このスレッドのアドバイスは、執筆時点では論理的および技術的に適切です。建設的な批判を歓迎します。
スタインÅsmul14年

基本的に、MSIテクノロジのいくつかの側面に関する記事を書いています。いいですね。私は、システム管理者として、「ソフトウェアのインストールが非常に遅い」という問題を本当に解決する必要はありませんでした。
mfinni

これは、このサイトや他のスタック交換サイトで何度か見た質問に対する更新された回答です。
スタインÅsmul14年

3
@mfinni-トピックではないという意味ではありません。このサイトには、私が経験していない多くの問題があります。
マークヘンダーソン

彼は、コメントなしでなぜダウン投票されたのかを尋ねていました。私は投票しなかったが、考えられる理由として見た答えを与えた。
mfinni

回答:


15

簡単な要約

  • 微調整が必要な速度のプロパティ
    • MSIFASTINSTALL(多分3またはを試してください7
    • FASTOEM考え直してください、ドキュメントを読む必要があります)
    • DISABLEROLLBACK(意味を理解し、MSIパッケージのカスタムアクションの実行を失敗させる可能性があります! MSIの設計に依存します-コミットおよびロールバックカスタムアクションを探してください)
  • セキュリティソフトウェアを一時停止して、インストールを高速化できます。
    • インストール中は無効にしてください-virustotal.comでインストーラをスキャンしてください。
  • アドミニストレーティブイメージ代替情報)から実行してみてください(ファイルの抽出は不要です)。
    • ローカル管理イメージから実行するのが最速です。
    • ネットワーク管理イメージを使用すると、高遅延ネットワークによりインストールが遅くなる可能性がありますか?
      • ファイル(小さなファイル)あたりの潜在的に高いオーバーヘッド。
      • 単一のCABのダウンロードは高速になる可能性があります(ここではウイルスチェックに時間がかかる場合があります)。
  • システムの復元は、MSIFASTINSTALLだけでなく、マシン上でグローバルに無効にできます。

背景情報

Windowsインストーラーセッションの遅さの多くは、ロールバック機能によるものです。まず、インストールまたはアンインストールの前に復元ポイントを作成します(システムの復元が無効になっていない場合)。その後、アンインストールとインストールの両方で影響を受けるすべてのファイルとレジストリキーバックアップし、エラーが発生した場合にシステムを元の状態に復元できるようにします。Windowsインストーラーの以降のバージョンでは、この複雑さの一部を無効にし、速度を上げる方法を備えています。以下の技術情報を参照してください。

別の速度要因は、MSIのすべてのコンポーネントと機能がレジストリに登録されることです。これにはかなりのオーバーヘッド伴いますが重要な企業展開とシステム管理の利点を実現するために必要です。このレベルの制御を特徴とする他の展開テクノロジーはありません。

ソースファイル埋め込まれた大きなMSIファイルは、インストーラファイルをtempフォルダーに抽出するのに時間がかかる場合があります。これは、すべての最大のボトルネックになることがあります。管理インストール実行してこのようなパッケージからソースファイルを抽出し、MSIファイル自体と並んで表示されるようにすることをお勧めします。これにより、各マシンでローカルにファイルを抽出する必要がなくなり、展開時間を節約できます。ここに、MSIパッケージからのファイル抽出を簡単な用語で説明する別の記事があります


技術的な案内


更新(2018年2月):展開を高速化するために、非常に特殊な状況(リンクされたコンテンツを参照)でFASTOEMというプロパティを設定できます。私はこれを試したことがありませんが、読む価値があります。効果的に使用できるとは思いませんが、試してみる価値はあります。


執筆時点でのWindowsインストーラーの最新の更新プログラムであるWindowsインストーラー5(Windows Server 2012、Windows 8、Windows Server 2008 R2、またはWindows 7で利用可能)には、新しいプロパティMSIFASTINSTALLが含まれており、大きなMSIパッケージ。有効な値については、上記のリンクを参照してください。復元ポイントない場合は3FileCostingのみ(ディスク領域の要件を決定するプロセス)をお勧めします。または、進捗メッセージの頻度を減らすために7

通常の「コスト計算」は、システム上に存在するものとインストールされるものとの間の、機能、コンポーネント、ディスク、およびレジストリの比較と計算の多くを特徴とします。私の意見ではこれのほとんどはめったに必要ではありません(クライアントPCのディスクスペースは一般的に豊富です-2018年の現実では、SDディスクが小さいため、スペースの問題が再発する可能性があります...)原価計算実行。

msiexec.exe / I "D:\ winzip112.msi" / QN MSIFASTINSTALL = 3

また、DISABLEROLLBACKプロパティを設定して、MSIインストーラーでのロールバックサポートを無効にすることもできます。新しいPCを準備している場合を除き、これを使用しないことを強くお勧めします。これは、何かが失敗した場合に最初からやり直すことができる特殊なケースです。実際に使用するコンピューターの場合、このプロパティを有効にすることはお勧めしません。

皮肉なことに、大量のファイルを置き換える巨大な更新パッケージを実行している場合、または大規模なアンインストールを実行している場合、アンインストールはすべての削除されたファイルをロールバック領域に移動するため、ロールバックを無効にすると速度が最も速くなります。非常に重要ですが、安全ではありません。コマンドラインでこのプロパティを設定するだけです:msiexec.exe / I "D:\ winzip112.msi" / QN MSIFASTINSTALL = 3 DISABLEROLLBACK = 1

管理インストール

最後に、背景情報で前述したように、MSIファイルの管理インストールを実行してファイルを抽出し、各マシンでローカルに抽出が行われないようにします。これは、ユーザーがかなり高速なネットワーク上にあり、ファイルのコピーが遅れることなく行われることを前提としています。遅延の大きいワイヤレスネットワークでは、1つずつコピーする必要がある小さなファイルを抽出すると、処理が遅くなる可能性があります。/ aをセットアップファイルに渡すだけで管理者インストールを実行します。

setup.exe / a

または

msiexec / a "D:\ winzip112.msi"

次に、プロンプトに従い、ファイルの抽出場所を選択する必要があります。この機能について説明しているスレッドについては、superuser.comを参照してください。


いくつかのリンク

速度:


じゃないMSIFASTINSTALLER尾なし。
n611x007

WixプロジェクトにプロパティMSIFASTINSTALL = 3を追加しました。それでも、インストール時間に違いはありません。<Property Id = "MSIFASTINSTALL" Value = "3" />何か間違ったことをしたかどうか
キャサーSubramaniam

1
主に、MSIの「離陸」時間を改善します-システムの復元ポイントの作成が遅くなる可能性があります。また、スペース要件の計算にも役立ちますが、実際のインストール自体はそれほど高速ではありません。私があなたに送るかもしれない別の答えを見つける間、待ってください。
スタインÅsmul19年


おわかりのように、特効薬はありませんが、いくつかの調整が可能です。セットアップの大きさは?
スタインÅsmul19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.