none
Windows 7+セットアップウィザードで、バージョン番号を上げずにインストーラーのテストを行うことはできませんか? RRS feed

  • 質問

  • Visual Studio 2008 ProfessionalのVisual BasicとWindows 7 Professionalで質問です。
    Visual Basic 2008で作成したソフトをセットアップウィザードでビルドしました。

    しかし、修正前と修正後で、VB開発元プロジェクトプロパティ→アプリケーション→アセンブリ情報で同じバージョン番号を付け、インストール動作のテストをした場合に問題が発生しました。

    前回作成したソフトは確かにアンインストールしたにもかかわらず、今修正したバージョンをインストールすることができません。
    代わりに、前にインストールされたバージョンが勝手に復元される症状が発生しました。

    おそらく、コントロールパネル→システム→システムの保護で、ハードディスクの保護設定が有効になっていることが原因だと思います。
    しかし、この件のためだけに解除したくはありません。
    ソフトの内部バージョンをあげれば復元されないのですが、同様にWindows 7テストの為だけ毎度バージョン番号を変えるというのはしたくありません。
    私はテストが完了して公開するときにだけバージョンを上げたいと考えています。

    同じ質問を人力検索で行った際は、アセンブリキャッシュの削除を勧めていただいたのですが
    私の作成しているソフトは、GACへ登録されていることはなかったようです。

    [人力検索] Windows 7 ProfessionalとVisual Studio 2008 Professionalで質問です。
    http://q.hatena.ne.jp/1264662979

    何かうまい解決策をお持ちの方よろしくお願いいたします。

    2010年2月5日 13:13

回答

  • 結局、プログラムインストール先からプログラムを削除するプログラムを作成し、アンインストール時に
    起動させるようにすることで対処しました。

    1.インストール時に、レジストリへ保存先を記録する

    2.アンインストール時に、ファイル削除プログラムを起動するようにする
    アンインストール先は、1の値を参考とする

    3.Windows7 64bitだと、Windows XPなどとは1で指定先した先とは
    別の場所へレジストリが保存されるので気を付ける
    ※Any CPUを指定しても32bit扱いになる

    4.保存先がProgram Filesである場合、Windows7ではUACでアンインストールプログラムから
    ファイル削除が拒否されるので、マニュフェストファイルを作成して回避する

    以上です。
    • 回答としてマーク くじぇ 2010年2月28日 15:02
    2010年2月28日 15:02

すべての返信

  • くじぇさん、こんにちは。

    こちらでも"セットアッププロジェクト"を使用し、
    インストーラー作成->インストール->コントロールパネルからアンインストール->DLL修正->再度インストーラー作成->インストール
    を繰り返しましたが、同じバージョンでもファイルの更新が出来ました。
    もしかするとタイミングの問題なのかもしれませんが。。。

    別の環境でも同じような問題が起きるのでしょうか?
    再インストール後は、新しいDLLに置き換わるが、時間が経つと、古いDLLに置き換わるのでしょうか?

    別途テストマシンを用意して、ハードディスクの保護を無効にしてテストを行うやり方で回避できないでしょうか?
    あまり良いアドバイスが出来なくてすみません。。。

    もし良いアイディアがありましたら、ご投稿の程、宜しくお願いします。


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年2月12日 9:05
  • 高橋さんこんにちは。
    返答ありがとうございます(返信に気がつかず済みません)。

    調べているとWindows7の C:\Program Files (x86) 内にインストールされたプログラムが
    削除されていないようです。

    別のマシンでも同様の症状が発生します。

    その為、バージョンが向上した物の場合は、再インストールの際に上書きしてくれますが
    バージョンが同じ場合は、作成した新しい日付のファイルで上書きしてくれず
    結果的に実行されるのは前のビルドになるという状態です。

    よろしくお願いいたします。
    2010年2月25日 10:58
  • 結局、プログラムインストール先からプログラムを削除するプログラムを作成し、アンインストール時に
    起動させるようにすることで対処しました。

    1.インストール時に、レジストリへ保存先を記録する

    2.アンインストール時に、ファイル削除プログラムを起動するようにする
    アンインストール先は、1の値を参考とする

    3.Windows7 64bitだと、Windows XPなどとは1で指定先した先とは
    別の場所へレジストリが保存されるので気を付ける
    ※Any CPUを指定しても32bit扱いになる

    4.保存先がProgram Filesである場合、Windows7ではUACでアンインストールプログラムから
    ファイル削除が拒否されるので、マニュフェストファイルを作成して回避する

    以上です。
    • 回答としてマーク くじぇ 2010年2月28日 15:02
    2010年2月28日 15:02