63

EXEセットアップのMSIを抽出して、ネットワーク経由で公開したいと思います。

たとえば、Universal Extractorを使用しますが、Javaランタイム環境では機能しません。

4

8 に答える 8

99

InstallShield MSIベースのプロジェクトの場合、次のことが機能することがわかりました。

setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"

このコマンドを実行すると、自由に指定できるディレクトリにMSIが抽出され、製品のアンインストールがサイレントに失敗します。

コマンドラインは基本的に、setup.exeに製品のアンインストールを試行し(/ x)、サイレントにアンインストールするように指示します(/ s)。その間、MSIを特定の場所(/ b)に抽出する必要があります。

/ vコマンドは、引数をWindowsインストーラーに渡します。この場合は/qn引数です。/ qn引数は、インストーラーのGUI出力を無効にします。

于 2014-06-04T09:35:14.930 に答える
61

クイックリスト:一般的な種類のsetup.exeファイルがいくつかあります。これが「ショートリスト」に含まれるものの一部です。詳細はこちら (下に向かって)。

Setup.exe抽出:(試してみるさまざまなフレーバー)

setup.exe /a
setup.exe /s /extract_all
setup.exe /s /extract_all:[path]
setup.exe /stage_only
setup.exe /extract "C:\My work"
setup.exe /x
setup.exe /x [path]
setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"

dark.exe -x outputfolder setup.exe

dark.exeはWiXバイナリです-WiXをインストールしてWiXsetup.exeを抽出します(現時点では)。詳細(セクション4)。

いつもあります:

setup.exe /?

MSI抽出: msiexec.exe /File.msi抽出:

 msiexec /a File.msi
 msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn

多くのセットアップツール:考えられるさまざまな種類のsetup.exeファイルをすべて網羅することは不可能です。それらは、あらゆる種類の異なるコマンドラインスイッチを備えている可能性があります。使用できるツールはたくさんあります。(non-MSI、、、、MSIなど...)admin-toolsmulti-platform

NSIS / Inno:Inno Setup一般的な、抽出を困難にするような無料のツール(非公式のアンパッカー、私が試したものではなく、virustotal.comが実行)。一方NSIS、標準のアーカイブソフトウェア(7-zipなど)が開いて抽出できる通常のアーカイブを使用しているようです。

一般的な秘訣:1つの秘訣は、を起動してsetup.exeで調べることです。もう1つのトリックは、または同様のアーカイブツールを使用して、フォーマットを読み取れるかどうかを確認することです。によって成功を主張する人もいます。私が使っているテクニックではありません。-セットアップの実行後にコンピューターに加えられた変更をキャプチャしてクリーンアップする-特別なツールが必要です(無料のツールのほとんどは行き来します。AdvancedInstallerArchitectとAdminStudioは大きなプレーヤーです)。1) system's temp folder for extracted files2) 7-Zip, WinRAR, WinZip3) opening the setup.exe in Visual Studio4) And there is obviously application repackaging


更新:インストーラーの作成に使用されるさまざまな展開ツールの簡単なプレゼンテーション: Windowsインストーラーの作成方法(包括的なリンク)。

また、現在(2018年)現在最も使用されている開発ツールのより単純なリストビューにより、読みやすく、概要を把握できます。

そして保管のために:


免責事項setup.exeファイルには、埋め込みMSIを含めることも、レガシースタイル(非MSI)インストーラーにすることも、抽出手段のない通常の実行可能ファイルにすることもできます。以下の「ディスカッション」では、最初にMSIファイルの管理イメージの使用方法とsetup.exeファイルからMSIファイルを抽出する方法について説明します。次に、他の種類のsetup.exeファイルを処理するためのリンクをいくつか提供します。コメントセクションも参照してください。

更新:管理インストールを使用したMSIファイル抽出の説明の前に、いくつかのセクションがすぐ下に追加されました。最も重要なのは、WiX setup.exeバンドルの抽出に関する宣伝文句です(ブロックの新しい子供)。抽出されたセットアップファイルを見つけるための「最後の手段」は、インストーラーを起動してから、一時フォルダーで抽出されたファイルを探すことです(長押しWindows Key、タップR、入力%temp%、または%tmp%押すEnter)-信頼性の理由から、最初に他のオプションを試してください。

このような重い相互リンクを伴う「一般化された混乱」についてお詫びします。リンクを十分に掘り下げると、必要なものが見つかると思いますが、コンテンツは実際にクリーンアップして整理する必要があります。

一般的なリンク:

コンテンツの抽出:

ベンダーリンク:


WiXツールキットとバーンバンドル(setup.exeファイル)

テクニカルノート:WiXツールキットはsetup.exe、ブートストラッパーツールで構築されたファイルを提供するようになりました。このファイルを抽出Burnするには、ツールキット独自の逆コンパイラーが必要です。dark.exeBurnは、複数の埋め込みMSIまたは実行可能ファイルを指定された順序でインストールできるsetup.exeファイルを作成するために使用されます。抽出コマンドの例を次に示します。

dark.exe -x outputfolder MySetup.exe

このような抽出を実行する前に、いくつかの前提条件の手順が必要です。

  1. WiXツールキットをダウンロードしてインストールします(WiXに関するいくつかの追加のコンテキスト情報を含む以前の回答へのリンクとダウンロードリンク)。
  2. WiXをインストールした後、が存在するフォルダに対してcommand prompt、を開くだけです。次に、上記のコマンドを指定してを押しますCDsetup.exeEnter
  3. 出力フォルダーには、抽出されたMSIファイルとEXEファイル、およびBurn GUIのマニフェストとリソースファイルの両方を含む2つのサブフォルダーが含まれます(もちろん、setup.exeファイルに存在する場合)。
  4. これで、抽出されたMSIファイル(またはEXEファイル)の内容を抽出できます。管理者インストールを実行することを意味するMSIの場合、以下で説明します。

ファイル抽出用のMSIサポートが組み込まれています(管理者インストール)

MSIまたはWindowsインストーラーには、これに対する組み込みのサポート( MSIファイルからのファイルの抽出)があります。これは、管理インストールと呼ばれます。これは基本的に、多くのターゲットコンピューターでインストールを実行できるネットワークインストールポイントを作成する方法として意図されています。これにより、すべての修復操作でソースファイルを常に使用できるようになります。

管理者インストールの実行とzipツールを使用したファイルの抽出は大きく異なることに注意してください。後者は、パッケージが外部ソースファイルを使用するように設定されるようにメディアテーブルのメディアレイアウトを調整しません-これは正しい方法です。常に、ハッキーなzip抽出よりも実際の管理者インストールを実行することをお勧めします。圧縮に関しては、実際には、MSIファイル形式内のcabファイルに使用される3つの異なる圧縮アルゴリズムがあります。MSZip、LZX、およびStoring(非圧縮)です。これらはすべて、管理者インストールを実行することで正しく処理されます。

重要Windowsインストーラーは、インストールされたMSIファイルをシステムにキャッシュして、修復、変更、およびアンインストールのシナリオを実行します。Windows 7(MSIバージョン5)以降、MSIファイルはフルサイズでキャッシュされるようになり、セットアップの起動時にUACプロンプトが表示されないようにするファイル署名の破損を回避できます(Vistaの既知の問題)。これにより、ディスクスペースの消費量が大幅に増加する可能性があります(一部のシステムでは数ギガバイト)。巨大なMSIファイルのキャッシュを防ぐには、インストールする前にパッケージのadmin-installを実行する必要があります。これは、管理対象ネットワークに適切に展開されている企業が行う方法であり、cabファイルを取り除き、小さなMSIファイルとそれ以外のファイルを使用してネットワークインストールポイントを作成します。


管理者インストールには多くの用途があります

便利な概念であるため、admin-installsの詳細を読むことをお勧めします。また、stackoverflowに関する投稿を書きました。msiexec/ aを使用して開始された管理インストールの目的は何ですか?

本質的に、管理者のインストールは次の場合に重要です。

  • インストーラーファイルの抽出と検査
    • 実際に何がインストールされているのか、どこにインストールされているのかを知るため
    • ファイルが信頼できて安全に見えるようにするため(ウイルスはありません-マルウェアやウイルスはMSIファイル内に隠れることがあります)
  • システム管理ソフトウェア(SCCMなど)を介した展開
  • 企業アプリケーションの再パッケージ化
  • 修復、変更、および自己修復操作
  • パッチとアップグレード
  • MSIアドバタイズメント(特に、これには、ネットワーク共有から直接実行でき、ショートカットとレジストリデータのみをインストールできる「ソースから実行」機能が含まれます)
  • 他の多くの小さな詳細

詳細については、上記のリンク先のstackoverflowの投稿をお読みください。これは、システム管理者アプリケーションパッケージャーセットアップ開発者リリースマネージャーさらには平均的なユーザーでさえ、インストールしているものなどを確認するための非常に重要な概念です。


管理者インストール、実用的なハウツー

インストーラーの配信方法に応じて、いくつかの異なる方法で管理者インストールを実行できます。基本的に、 MSIファイルとして配信されるか、 setup.exeファイルにラップされます。

管理者特権のコマンドプロンプトからこれらのコマンドを実行し、対話型コマンドラインのGUIの指示に従います。

  • MSIファイル

    msiexec /a File.msi
    

    これはGUIで実行するためのものであり、サイレントに実行することもできます。

    msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn
    
  • setup.exeファイル

    setup.exe /a
    

setup.exeファイルは、レガシースタイルのセットアップ(非MSI)または恐ろしいInstallscript MSIファイルタイプ(ハイブリッドの非標準準拠のMSI形式を持つよく知られているバグのあるInstallshieldプロジェクトタイプ)にすることもできます。これは基本的に、カスタムのより高度なGUIを備えたMSIですが、バグもたくさんあります。

従来のsetup.exeファイルの場合、/ aは何もしませんが、このpdfで説明されているように/ extract_all:[path]スイッチを試すことができます。サイレントインストールなどにも参考になります。もう1つのリソースは、Installshieldsetup.exeコマンドラインパラメーターのこのリストです

MSIパッチファイル(* .MSP)を管理イメージに適用して、ファイルを適切に抽出できます。7Zipはファイルを抽出することもできますが、適切にフォーマットされません。

最後に-最後の手段-他の方法が機能しない場合は、システムのtempフォルダーをクリーンアップし、setup.exeをインタラクティブに起動して、最初のダイアログが表示されるのを待つことで、抽出されたセットアップファイルを入手できます。ほとんどの場合、インストーラーは大量のファイルを一時フォルダーに抽出します。ファイルがプレーンな場合もあれば、CAB形式の場合もありますが、Winzip、7Zip、またはUniversal Extractor(この製品はテストされていません)でさえ、これらを開くことができる場合があります。

于 2014-07-28T01:54:51.730 に答える
23

7-Zipでうまくいくはずです。

これを使用すると、EXE内のすべてのファイル(つまり、MSIファイル)を抽出できます。

7-Zipでそれを行うことができますが、 SteinÅsmulによって指摘されているように、より良い方法は管理上のインストールです。

于 2009-10-10T12:30:28.660 に答える
15

この質問は主にタグが付けられたInstallShieldに関するものだと思いますが、WiXベースのパッケージ(および場合によっては他のパッケージ)でも同じ問題が発生する場合は、次のように/extractを使用してインストーラーを呼び出してください。

C:\> installer.exe /extract

これにより、MSIがインストーラーと一緒にフォルダーに配置されます。

于 2012-12-18T02:31:59.087 に答える
8

パラメータから開始:

setup.exe /A

含まれているファイル(を含むMSI)の保存を要求します。

これは、を作成したソフトウェアによって異なる場合がありますsetup.exe

于 2010-07-09T09:57:50.703 に答える
6

これを行う唯一の方法は、exeを実行してMSIを収集することです。注意しなければならないのは、MSTを使用してMSIを変換している場合、それらが失われる可能性があるということです。

私はこのバッチコマンドラインを使用します:

SET TMP=c:\msipath

MD "%TMP%"

SET TEMP=%TMP%

start /d "c:\install" install.exe /L1033

PING 1.1.1.1 -n 1 -w 10000 >NUL

for /R "%TMP%" %%f in (*.msi) do copy "%%f" "%TMP%"

taskkill /F /IM msiexec.exe /T
于 2012-08-23T10:26:19.660 に答える
3

インストーラーを起動しますが、ボタンは押さないでくださいInstall >。それで

cd "%AppData%\..\LocalLow\Sun\Java"

サブディレクトリの1つでMSIファイルを見つけます(例:)jre1.7.0_25

Data1.cabそのサブディレクトリからも必要になることに注意してください。

于 2013-08-18T16:53:05.453 に答える
0

ツールを使う必要はありません!! 簡単な方法に従うことができます。

どのツールが自己解凍型のセットアッププログラムを作成したのかわからないため、一般的な回答を提供する必要があります。

この種のほとんどのプログラムは、パッケージファイル(.msi)をTEMPディレクトリに抽出します。この動作は、InstallShieldDeveloperのデフォルトの動作です。

追加情報がない場合は、セットアップを起動するだけで、最初のMSIダイアログが表示されたら、TEMPディレクトリで新しく作成されたサブディレクトリまたはMSIファイルを調べることをお勧めします。インストーラーをキャンセル/停止する前に、そのMSIファイルをTEMPフォルダーからコピーするだけです。その後、インストールをキャンセルできます。

于 2016-03-23T09:05:48.900 に答える