« TMPGEnc Video Mastering Works 5.2.4.68 | メイン | Firefox 12 »

2012年4月24日

Windowsアプリのインストール後のエラー

カテゴリー: プログラミング

Windows Vista以降、インストーラーを使ってアプリケーションをインストールすると「このプログラムは正しくインストールされなかった可能性があります」といったメッセージを目にすることがあります。どういった条件で出るのだろうと以前から気になっていたのですが、腰を据えて調べてみました。

条件は意外と複雑で理解に苦労しましたが、以下のサイトが凄く参考になりました。(感謝!)

DSAS開発者の部屋:「このプログラムは正しくインストールされなかった可能性があります」を回避する方法 (Windows 7, Vista)

しっかし、ファイル名に含まれる文字列で動作が決まるとか、Windowsって・・・(笑)

早速このサイトのとおり、mt.exeでマニフェストファイルを書き換えることで対処しようと試みたのですが、1つ問題がありました。自己解凍形式のアーカイバを利用したインストーラーです。私はフリーの簡単インストーラをよく使うのですが、これも1ファイルのexe形式でインストーラーを作ると、この問題に該当します。

これらの自己解凍アーカイブは、exeファイルの末尾に圧縮データを無理矢理付加したような構造になっているのですが、mt.exeでマニフェストを書き込むと、この部分が切られてしまうのです。

だが、まだ諦められません(^^;) 更に調べてみると、この圧縮データ部分はファイルの決まった位置(キリの良い位置)にあるようです。それならmt.exeの実行前にバックアップを取っておき、実行後にその部分だけ戻せば良いはずです。試しにバイナリエディタで切り貼りしてみたところ、うまく動作しました。

とはいえ、こんな面倒な作業を毎回やるわけにはいきません。そこで、この切り貼り処理を自動で行うプログラムを作ろうと思っています。バッチファイルと連携して使うコマンドラインツールだったら簡単に作れそうだし、インストーラーをビルドしたあとダブルクリックするだけで修正できるなら、使い勝手も問題ありません。

あとは、こういうことをすると将来、互換性の面で問題が出ないかどうか不安ですね。いったん作ってしまったインストーラーは問題ないだろうけど、作成ソフトのバージョンアップは慎重にならざるを得ませんね。



コメント

よろしければコメントしてください。

※メールアドレス以外の項目はこのページ上に公開されます。個人情報などの入力にはご注意ください。




保存しますか?


「投稿」ボタンを押してから書き込み完了までに多少時間がかかる場合があります。ご了承ください。