0

[プログラムの追加と削除]でアプリケーションを削除しようとすると、次のエラーが表示され、アプリケーションのアンインストールに失敗します。

エラー

'mFileBagIDE.dll'は有効な短いファイル名ではありません。

不思議なことに、このエラーが発生するのは、元のインストールDVDがドライブにない場合のみです。DVDがドライブにある場合、アンインストールは完全に機能します。

これが本当のキッカーです。アプリケーションがすでに広く展開されるまでこのバグを見つけられませんでした。クライアントの状況では、多くのクライアントが元のDVDを持っていない可能性があります。これは、前のバージョンを最初に削除できないため、次のバージョンのインストーラー(Windowsインストーラーのメジャーアップグレードを実行する)が失敗することを意味します。

したがって、私の質問は2つあります。

  • 将来のリリースで回避できるように、この問題を作成するために何をしましたか?
  • 次のWindowsインストーラーにこのエラーを無視して、前のバージョンを削除するように指示する方法はありますか?

現在のインストーラー(問題を引き起こしているインストーラー)は、InstallAwareを使用して生成されました。WiXに移行する可能性があります。ただし、どのプラットフォーム(InstallAware、WiX、生のMSIテーブル)でもソリューションを利用できます。

更新:InstallExecuteSequence MSIのテーブルとテーブルの両方に次の行がありますInstallUISequence。これは非常に関連性が高い可能性がありますが、SRCDIREXプロパティが何であるか、またはどこに設定されているかわかりません。

| Action        | Condition    |
|---------------|--------------|
| ResolveSource | NOT SRCDIREX |
4

3 に答える 3

2

おそらく、元のMSIを参照するアクション(標準またはカスタム)の1つが、インストール時にのみ実行されるように条件付けられていませんでした(たとえば、ResolveSourceは「未インストール」として条件付けられる必要があります)。関連するアクションの条件を変更するパッチ(MSPファイル)を使用すると、これを回避できる場合があります。

于 2010-01-28T15:55:21.200 に答える
0

まず、エラーの原因となっているアクションを特定します。これが私がそれをする方法です:

  • DVDからアプリをインストールします
  • msiファイルをローカルフォルダにコピーします。たとえば、「c:\temp」としましょう。
  • DVDを削除します
  • 次のようにアンインストールを開始します: " msiexec /x yourapp.msi /L*v c:\temp\uninst.log"

エラーが発生すると、アンインストールは事実上一時停止されます。次に、ログの最後をチェックして、シーケンスのどこにいるかを正確に確認できます。これは、デバッグに役立つはずです。

答えが本当にResolveSourceである場合、定期的なパッチ適用はオプションではない可能性があります。HeathStewartは彼のブログでこれについて言及しています -http://blogs.msdn.com/heaths/archive/2007/10/25/resolvesource-requires-source.aspx

「通常、ResolveSourceをスケジュールしないでください。たとえば、パッチのインストール時にこれが実行される場合、ユーザーは、必要かどうかに関係なく、元のメディアを挿入する必要があります。」

それが自分の立場である場合は、ResolveSourceアクションの条件を更新する変換を作成し、それをmsiファイルのキャッシュされたコピーに手動で適用できます。少し苦痛ですが、うまくいくと確信しています。

于 2010-01-29T14:57:49.873 に答える
-1

それらのファイルを%WinDir%/ system32フォルダーにコピーしようとしましたか?

編集:すべてのセットアップMSIパッケージをディスクにコピーするようにセットアップし、ディスクドライブからインストールします。アンインストーラーに不要なすべてのファイルを削除します。アドビ、HPおよび他の多くの会社がそれを行っています。

于 2010-01-28T15:21:53.863 に答える