C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■89754 / )  Re[1]: カスタムインストーラ MSIHANDLEのリーク
□投稿者/ とっちゃん (561回)-(2018/12/20(Thu) 11:52:41)
No89753 (ぽんすけ さん) に返信

> カスタム動作を組み込んだインストーラで、アンインストール時、以下のエラーが発生しましたが、
> http://blogs.wankuma.com/tocchann/archive/2008/02/13/123023.aspxでの解説と同じ現象かと思います。
>
> カスタム動作の中では、MSIのデータベースについての処理は特におこなっていないのですが、
> なぜリークエラーが発生するのか理解できておりません。
> 処理の最後で「MsiCloseHandle」を呼び出せば解決するのでしょうか・・・
> すみませんが、ご教示お願いいたします。
>
> -------------------------------------------------------
> エラー 1001。 Error 1001. インストールを初期化中に例外が発生しました:
> System.IO.FileNotFoundException: ファイルまたはアセンブリ 'file:///C:\windows\SysWOW64\Company'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
> DEBUG: Error 2769: Custom Action _808ED202_6D40_4CED_8546_AF7EFF518B8B.uninstall did not close 1 MSIHANDLEs.
> このパッケージをインストールするときに予期しないエラーが検出されました。このパッケージは問題がある可能性があります。エラー コードは 2769 です。 引数: _808ED202_6D40_4CED_8546_AF7EFF518B8B.uninstall, 1,
> CustomAction _808ED202_6D40_4CED_8546_AF7EFF518B8B.uninstall returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
>

すごく懐かしいブログ記事が。。。w

ですが、ハンドルのクローズ漏れの原因は前回( ■No88855 )も書いていますが、例外が発生していることに起因しています。
前回のやり取りはこちら。 http://bbs.wankuma.com/index.cgi?mode=al2&mo=88855&namber=88855&space=0&page=0&KLOG=153

確かに DEBUG: Error 2769 の行以降のログはクローズ漏れを表していますが、直接的な原因はその手前の Error 1001 にあります。
カスタム動作本体が例外でクラッシュしているため、そこに渡したハンドルもクローズされていない!と言ってるだけです。

なので、調査するのは「なぜ例外が発生するのか」「どこで例外が発生しているのか」という、一般的な
プログラムエラーと同じような対応となります。
以前も書いていますが、第三者から言えることは、その程度です。

ところで、この問題、前回は解決していますがその時は結局どうしたのでしょう?

強制アンインストールしてからなら問題ないとか、書いてありましたけど。。。?
古いバージョンをインストール・アンインストールは問題ない?
新しいバージョンを入れて古いのをアンインストールは問題がある?
そのあたりも情報がないままです。

返信 編集キー/


管理者用

- Child Tree -