web-dev-qa-db-ja.com

インストーラーからPython 3.5+を抽出する方法は?

バージョンlower 3.5.0よりもWindows用の_.MSI_インストーラーがあり、これには本当に素晴らしい隠しオプションがありました。そのオプションは次のようになりました。

_msiexec.exe /a "file.msi" /qb /L*V "file.log" ALLUSERS=0 TARGETDIR="target" CURRENTDIRECTORY="%~dp0" <additional options>
_

これにより、基本的に管理者権限を無視できます。これは、MSIがネットワーク全体に対して何らかのインストーラーを使用するため、アクセス許可が回避されるためです。

Python 3.5.0では、新しい_.EXE_インストーラーが導入されました。このインストーラーには_.MSI_ファイルがパックされており、次の方法でそれらを取り出すことができます。

_python-3.5.0.exe /layout [optional target directory]
_

しかし、このソリューションには本当に厄介なことがあります。これを行うと、_.MSI_ファイルには_-d.msi_サフィックスが付き、上記のmsiexecコマンドを使用して手動で解凍すると、すべてのファイルにもその接尾辞が付いているため、完全に破損インストールになります。各ファイルには_-d.<file ext>_サフィックスではなく_-d.msi.<file ext>_が付いているため、ファイルの名前を変更することは実際にはオプションではありません。したがって、バッチなどのツールを使用して簡単な方法で名前を変更するのは、複数のケース(例:フォルダー)。

インストーラーのコンテンツを別のフォルダーに抽出する方法はありますか?以前は_Programs and features_に追加のものを追加せずにPython 3.5.0 (64bit)または類似?

または他の質問-インストーラーが_Programs and features_にアクセスすることを禁止し、管理者権限とレジストリを要求しないようにする方法はありますか?

テストを主な目的として、複数のpythonインストールを何にもバインドしないようにしたい場合に非常に便利です。 pythonランチャー(_py.exe_のもの)、virtualenv、またはその他の代替「ソリューション」を使用するつもりはないことに注意してください。これらはすべて、singlePython同じバージョンのインストールおよび/または大きすぎてすぐに使用できません。

2
KeyWeeUsr

どうやらカジュアルPythonインストーラー3.5には必要なMSIが埋め込まれているので埋め込み、それらは出てきません。しかし、各Pythonのweb-installerで、同じことを実行して動作するPythonインストール:

_python-3.5.0-webinstall.exe /layout <folder>
_

これにより、Release MSIファイルがダウンロードされます(DebugまたはPDBのみではありません)。次に、__d.msi_および__pdb.msi_サフィックスを持つファイルをフィルタリングする必要があります。これは、Batchでは簡単で、次の構造になります。

_core.msi
dev.msi
doc.msi
exe.msi
launcher.msi
lib.msi
path.msi
pip.msi
python-3.6.0-webinstall.exe
tcltk.msi
test.msi
tools.msi
_

vS再配布可能ファイルがかなりたくさんあります。必要に応じて、作業ディレクトリ内の_.exe_、_.msu_(redists)、__d.msi_、__pdb.msi_ファイルを削除することをお勧めします。残りはReleaseファイルと、launcher(_py.exe_)、path(おそらく永久にpython to PATH)を置く)などのインタープリター機能を拡張するファイルです。

これでそれぞれを実行する場合:

_msiexec.exe /a <file> targetdir=<folder>
_

ポータブルPythonインストールが機能します。そのようなものは 公式にはサポートされていません であることに注意してください。

2
KeyWeeUsr

サブフォルダにすべての.msiファイルが含まれるようになりました: https://www.python.org/ftp/python/3.8.0/AMD64/

1
Lucas Cimon

以前にリンクされたバグレポート で述べたように、 nugetパッケージ は手動で解凍するのに適しています-実際にはZipファイルです。

Python 3.8.1 nugetには、実際のPythonインストール(通常のpython.exepythonw.exeLib/include/)を含むtoolsサブフォルダーが含まれていますなど);そのフォルダの外にあるものはメタデータです。

0
David Fraser