1

単一の DLL (C# 3.5) に依存する C# (.NET 3.5) で記述されたカスタム アクションを実行しようとしています。インストールに .EXE と .DLL の両方を含め、それらがインストール場所にコピーされていることを確認しました。ただし、カスタム アクションを実行しようとするたびに、次のエラーが発生します。

アクション開始 7:21:16: InstallFinalize。エラー 1721。この Windows インストーラー パッケージには問題があります。このインストールを完了するために必要なプログラムを実行できませんでした。サポート担当者またはパッケージ ベンダーにお問い合わせください。アクション: UpgradeTo022、場所: C:\Program Files\Test\、コマンド: Upgrade-0.2.2.EXE MSI (s) (CC:38) [07:21:19:061]: 製品: テスト -- エラー 1721 . この Windows インストーラー パッケージには問題があります。このインストールを完了するために必要なプログラムを実行できませんでした。サポート担当者またはパッケージ ベンダーにお問い合わせください。アクション: UpgradeTo022、場所: C:\Program Files\Test\、コマンド: Upgrade-0.2.2.EXE

カスタム アクションは次のように定義されます。

<CustomAction Id="UpgradeTo022"
Directory="INSTALLLOCATION"
Impersonate="no"
Execute="deferred"
ExeCommand='Upgrade-0.2.2.EXE'>

注: カスタム アクションは昇格された権限で実行する必要があるため、遅延実行と Impersonate="no" 属性があります。

以下のように予定されています。

<InstallExecuteSequence>
     <Custom Action="UpgradeTo022" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

ファイルは次のようにインストールされます。

<Component Id="CMP_UpgradeCommon" Guid="8ECF5076-732E-4010-A33B-BE362D818949" Win64="yes">
  <File Id="FILE_UpgradeCommonDLL"
   Source="..\Upgrade\UpgradeCommon\bin\Debug\UpgradeCommon.dll" Vital="yes"/>
</Component>

マネージ EXE の実行がカスタム アクションと MSIS の問題であるという暗示をいくつか見てきましたが、実際の決定的な答えはありません。

また、カスタム アクションとして依存関係のない非常に単純な .EXE を実行しようとしましたが、うまくいきませんでした。

インストーラー パッケージの作成に少し慣れていないので、サポートされていないことをしようとしているか、簡単なことを見逃している可能性が非常に高いです。

これを理解するための指針を事前に感謝します。

JT。

4

1 に答える 1

0

残念ながら、これには多くのことが考えられます。まず、.net 3.5 がターゲット ボックスにインストールされていることを確認しますか? その上で、実際にターゲット マシンで exe を正常に実行できますか?

注意すべきもう 1 つのことは、遅延アクションはシステム アカウントのコンテキストで実行されることです。そのため、何らかの理由で exe がプロファイルへのアクセスを必要とする場合、これにより失敗します。インストールの一部として証明書を生成しようとしたときに、まさにこの問題が発生しました。私はこれについて長い間頭を悩ませていましたが、最終的に -RunAs スイッチを使用して PowerShell を生成し、スクリプトを実行して exe を呼び出す必要がありました。システム アカウント (http://www.tech-recipes.com/rx/1288/how-to-run-applications-in-the-local-system-account- lsa/)

于 2012-06-08T13:27:28.060 に答える