パブリッシャーのアンインストールの際にNo.08924
でるもんたいいじま さん 16/02/12 15:12
 
こんにちは、でるもんた・いいじまです。

先日、秀丸パブリッシャーの64bit版(.NET版)のバグが解決してV4.17が
出た、ということでV4.16bの32bit版(VB6版)から入れ替えたのですが、
最初に32bit版をアンインストールする際に気になったことがあります。

アンインストールの際に、「hmpsub.exeは手作業で削除してください」と
指示されるのですが、自動で削除するようにできないかという提案です。

現状このようになっているのは、「.exe ファイルが動いているときには、
その .exe ファイルにはロックがかかっており、削除することができない」
というのが理由だと当方では理解しているのですが、.exe ファイルではなく
バッチファイルやWSHスクリプトであれば、自分自身を削除することも可能です。

ぐぐってみて、下記のサイトを見つけました。
   自殺プログラム
   http://katahiromz.web.fc2.com/win32/suicide.html

ぜひ、この手のテクニックの導入を検討していだだけないでしょうか。

[ ]
RE:08924 パブリッシャーのアンインストーNo.08925
秀まるお さん 16/02/12 17:31
 
 実は今、Version 4.18をアップロードしてる所ですが、

> アンインストールの際に、「hmpsub.exeは手作業で削除してください」と
> 指示されるのですが、自動で削除するようにできないかという提案です。

 たぶんですが、32bit版の方はVisual Basic(のVersion 6.0)で作成されてま
して、たぶんですが、インストーラーもVisual Basicで作成されてるんだと思い
ます。それで何か、インストーラーでうまく削除できない理由があって、それで
そういうメッセージを表示してるんじゃないかと思います。

> というのが理由だと当方では理解しているのですが、.exe ファイルではなく
> バッチファイルやWSHスクリプトであれば、自分自身を削除することも可能です。

 それはそれで方法があるんだと思いますが、hmpsub.exeは「exeファイル」な
ので、その方法は使えないと思います。

 どっちにしてももうVisual Basic 6.0の方は対応が難しい(だからこと64bit
版=.NET Framework版を作った)って事情がありますし、もうアンインストール
が完了したら今後はアンインストールの必要も無いと思うので、そのまま放置さ
せていただくってことでお願いします。

[ ]
RE:08925 パブリッシャーのアンインストーNo.08926
でるもんたいいじま さん 16/02/12 18:03
 
お返事ありがとうございます。
でるもんた・いいじまです。

> 実は今、Version 4.18をアップロードしてる所ですが、

行き違いになりました。失礼しました。

>> .exe ファイルではなくバッチファイルやWSHスクリプトであれば、
>> 自分自身を削除することも可能です。
>
>  それはそれで方法があるんだと思いますが、hmpsub.exeは
> 「exeファイル」なので、その方法は使えないと思います。

はい。例示したURLに書いてあるC言語のコードは次のように処理しています。

 ・まず、ターゲットのexeファイルを削除するための、次のような内容の
  バッチファイルを作る(uninst.exeとfinal.batはそれぞれ、アン
  インストーラー本体と、自動生成されたバッチファイルのファイル名)
    :loop
    del uninst.exe
    if exist uninst.exe goto loop
    del final.bat

 ・環境変数COMSPECの内容を取得し、CreateProcess() にそのCOMSPECの
  値と上記のバッチファイルの名前とを渡して起動する。

  #普通の優先度で起動したのではタイトな空ループがCPUパワーを
  #空費するので、優先度はIDLE_PRIORITY_CLASSにしておく。
  #当然、ウィンドウサイズも最小化する。

 ・バッチファイルを起動したら、CreateProcess() から受け取った
  hProcessとhThreadを解放し、exeファイルのほうは exit(0); で
  終了させる。少し経てば当該exeファイルへのロックが解けて、
  上記のバッチファイルの del uninst.exe が成功するようになる。

> どっちにしてももうVisual Basic 6.0の方は対応が難しい(だからこと
> 64bit版=.NET Framework版を作った)って事情がありますし、もう
> アンインストールが完了したら今後はアンインストールの必要も無いと
> 思うので、そのまま放置させていただくってことでお願いします。

了解です。
お付き合い下さり、ありがとうございました。

[ ]