web-dev-qa-db-ja.com

MSIインストーラーに対してDLLを実行できませんでした

dll could not be run

私はその問題がWindowsインストーラにあると思います。サービスを再起動しようとしましたが、効果がありません。 。msiで終わるものは何もインストールできません。時々私はそのようなエラーメッセージを得ます:

enter image description here

イベントビューアログ:

Pythonインストーラー

製品:Python 2.7.3 - エラー1723。このWindowsインストーラパッケージには問題があります。このインストールを完了するのに必要なDLLを実行できませんでした。サポート担当者またはパッケージ製造元に連絡してください。アクションCheckDir、エントリ:_CheckDir @ 4、ライブラリ:C:\ Users\x\AppData\Local\Temp\MSI570C.tmp

SSDLifeインストーラー:

製品:SSDlife Pro - エラー1723。このWindowsインストーラパッケージには問題があります。このインストールを完了するのに必要なDLLを実行できませんでした。サポート担当者またはパッケージ製造元に連絡してください。アクションWIX_TestVersion、エントリ:WIX_TestVersion、ライブラリ:C:\ Users\x\AppData\Local\Temp\MSIA32E.tmp

エラー1723で検索中:このエラーは、Windowsインストーラのバージョンが古い場合に発生する可能性があります。

Windowsインストーラへのリンクがいくつかありますが、どちらもサポートされているオペレーティングシステムの一覧にWindows 7がありません。

https://www.Microsoft.com/ja-jp/download/details.aspx?id=25

https://www.Microsoft.com/ja-jp/download/details.aspx?id=8483&WT.mc_id=MSCOM_EN_US_DLC_DETAILS_131Z4ENUS22007

Windows(7 x 64)は最新です。

また、このFixitを試してみました: http://support.Microsoft.com/mats/Program_Install_and_Uninstall

しかし、それは問題を見つけることができませんでした。

23
Kedar

私もこの問題に遭遇しました。 Alexey Ivanovの返事は私の助けにはなりませんでしたが、C:\Users\x\AppData\Local\Tempの調査を促しました。

いつものように、エラーメッセージは半分しか役に立ちませんでした。私の場合、DLLが欠けていませんでした - インストーラはフォルダにアクセスする権限を持っていませんでした。私は管理者としてインストーラを実行しようとしませんでした - これは私がすでに管理者アカウントを使用していて、UACが特権の昇格を処理することを期待していたことを考えると意味がありません。とにかく、Windowsの多くのことと同じように、このこと全体は私にとってちょっとした謎です。

それにもかかわらず、Properties > SecurityフォルダのC:\Users\x\AppData\Local\Tempに行き、そのEveryoneFull controlの許可を与えた後、以前失敗していたインストーラは今うまくいきました!万歳! EveryoneはすでにReadおよびWriteアクセス権を持っていたので、Full controlにも必要なExecute権限が追加されたと思います。

私が今疑問に思っているのは、これがそもそもどのように行われたのか、そしてこのディレクトリに対する正しいパーミッションがどうなっているのかということです。

26

簡単な回避策は、管理者としてコマンドシェルを実行し(単にcmd.exeを検索して右クリック - >管理者として実行)、MSIパッケージの場所に移動してmsiexec /i packagename.msiを実行することです。それは私のために働きました。

8
Marco Lanzetta

システムに必要なDLLが欠落している必要があります。

どちらの場合も、WindowsインストーラーはDLLにあるカスタムアクションを実行しようとしました。それらの.tmpファイル:C:\Users\x\AppData\Local\Temp\MSI570C.tmpおよびC:\Users\x\AppData\Local\Temp\MSIA32E.tmpは、実際にはMSIから抽出されたDLLファイルです。

しかし、何らかの理由でDLLのロードに失敗しました。

最も重要なことは、どのDLLが欠落しているかを見つけることです。エラーメッセージが画面に表示されている間に、一時ディレクトリに移動して、一時DLLファイルがまだ存在するかどうかを確認します。ある場合は、DLL拡張子でコピーします。次に、必要なもののうちどのDLLが欠落しているかを調べるには、Visual Studioからdepends.exeユーティリティを使用できます。

一時ファイルがすでに削除されている場合、DLLを取得する唯一の方法は、パッケージから Binary テーブルから抽出することです。

最も可能性の高い候補は2つあります。VisualC++ランタイムが見つからないか、.Netランタイムがありません。しかし、それは単なる推測です...

1
Alexey Ivanov

私はDimadimaが提案したことを試しましたが、私はまだ少しアクセス問題を抱えていました。私はWin 7/Vista用のtake ownershipというツールを掘り下げました。それは右クリックにコンテキストメニューを追加し、あなたは '所有権を取る'ことができます。私はそれが魅力のように働いたことを試みることを考えた。

http://www.howtogeek.com/howto/windows-Vista/add-take-ownership-to-Explorer-right-click-menu-in-Vista/

0
Jarmerson