13

サンプルプログラムのパックからのMSIファイルのセット(WiXによって生成された)のラウンドトリップインストールとアンインストールを自動化しようとしています。何らかの理由で、ダブルクリックで完全にインストールできる.MSIファイルは次のように生成されます。

このインストールパッケージを開くことができませんでした。パッケージが存在し、アクセスできることを確認するか、アプリケーションベンダーに連絡して、これが有効なWindowsインストーラーパッケージであることを確認してください。

次の方法でMSIEXECを使用して呼び出すと:

<ItemGroup>
  <_SampleMsi Include="$(_ArtifactsPathAcceptanceSamples)\**\*.msi" />
</ItemGroup>
<Exec Command="$(WixDir)\smoke &quot;%(_SampleMsi.Identity)&quot;"/>
<!--Guarantee precondition even if cleanup didn't work-->
<Exec Command="msiexec -passive -norestart -x &quot;%(_SampleMsi.Identity)&quot;" IgnoreExitCode="true"  />
<Exec Command="msiexec -norestart -i &quot;%(_SampleMsi.Identity)&quot;"  />
<!--Uninstall of every sample should also always work-->
<Exec Command="msiexec -passive -norestart -x &quot;%(_SampleMsi.Identity)&quot;" />

製品IDGUIDに基づいてアンインストールしようとすると、同じ問題が発生します。-

msiexec -passive -norestart -x FC7445BB-7E1D-4E36-A42A-CFA56263E453

何が得られますか?

4

2 に答える 2

21

.\ファイル名の前に付けるのを削除しただけで、機能しました。

于 2019-05-09T12:17:05.897 に答える
12
  1. メッセージのテキストを文字通り受け取らないでください。結論として、misexecはコマンドの一部をファイル名として扱っており、コマンドのエンティティを十分にロードして処理することができなかったと結論付ける必要があります。パスが長すぎる、アクセス許可が拒否された、または想像力によってのみ制限されたその他の条件が原因であるかどうかにかかわらず(KB記事のほとんどは、インストーラーキャッシュの問題に関連しているようです。これは、通常、GUIDベースの構文またはパッチ/アップグレードです。オプション)

  2. GUIDから中括弧が欠落しています、ばか。msiexec /?教えたり見せたりしなくても、GUIDに中括弧があることを知っていたということですか?!

    つまり、次のように置き換える必要がありFC7445BB-7E1D-4E36-A42A-CFA56263E453ます{FC7445BB-7E1D-4E36-A42A-CFA56263E453}

    (私は出力の信頼/読み取りを停止し、すべてのKB記事であるインストール構文に不満があるように見えたのと同じ理由で、GUIDがキャッシュされたMSIに解決されている可能性を検討していました。このスペースで話す傾向があります。)

  3. パスに相対ジャンプが含まれています。これは、正味の長さが160文字未満であるにもかかわらず、総長が160文字を超えているため、基になるファイルAPIが詰まっています。人々は誤解を招くような一般的なエラーメッセージを書くのが好きです。

    使用する各バッチ式でIdentity上記を置き換えることで修正できます。FullPath

    それを改善する別の方法WorkingDirectoryExecmsiexec

于 2012-04-11T15:04:44.030 に答える