none
全く別のソフトなのにバージョンアップだと判断されてしまいます RRS feed

  • 質問

  • Visual Studio 2008で開発したソフトをWindowsインストーラーを利用してCDで配布しています。最初に開発したソフトの配布は完了し、現在、2つ目のソフト(全く別の製品です)を開発して動作確認中です。ところが、最初のソフトウェアがインストールされているPCに、2つ目のソフトウェアをインストールしようとすると

    「別のバージョンの製品が既にインストールされています。このバージョンのインストールを続行できません」と表示され、最初のソフトをアンインストールするように言われてしまいます。

    2番目のソフトは、最初のソフトのプロジェクトをそのまま使い、コードだけ書き換えて作ったため、このような状況になってしまったのだと、ここまで来てやっと理解できました。

    プロジェクトのディレクトリ名を変更したりしているのですが、全く同じ状態です。どこを変更すれば、別物のソフトだとWindowsインストーラーは理解してくれるでしょうか?

    2010年9月13日 16:38

回答

  • ProductCodeが違えば、UpgradeCodeは関係ないように思えるのですが … とりあえず、複数のPCで動作確認を行い問題ないようですので、解決したものと判断しております。

    UpgradeCode も同系統の製品かどうか判別するために使われています。
    http://msdn.microsoft.com/ja-jp/library/465253cd(VS.90).aspx

    たとえば、RemovePreviousVersions では UpgradeCode と ProductCode を使っています。
    http://msdn.microsoft.com/ja-jp/library/yys0tfd0(VS.90).aspx

    (InstallShield 公認ガイドブックによると)
    UpgradeCode が同じで ProductCode が異なる場合、メジャーアップグレードという扱いになり、前のバージョンをアンインストールしてからインストールする形になります。
    UpgradeCode が同じで、ProductCode も同じ場合、バージョン番号が上がっていればマイナーアップグレードという形になります。
    バージョンまでも同じ場合は、スモールアップグレードという形になります。

    このように、UpgradeCode が同じ場合は同一系統の製品として取り扱われるように設計されています。
    それぞれのアップグレードの挙動の差については説明できかねますので、お手数ですが、インストーラ関連の情報を集めてください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2010年9月16日 1:47
    2010年9月14日 13:57
    モデレータ
  • 2 番目のソフトのセットアッププロジェクトは、1 番目のソフトのものをコピーして作ったのではありませんか?

    セットアッププロジェクトには ProductCode と呼ばれる ID(GUID) が設定されており、それによって同じソフトか、違うソフトかを区別しています。
    コピーして作るとお手軽ですが、そういった問題を抱えると言うことになります。

    解決方法としては、ソリューションエクスプローラでセットアッププロジェクトを選択し、そこでプロパティペインを開いてください。
    (注意:右クリックからのプロパティだと違う画面になります。F4 キーを押すと目的の画面が出てくるかも。)
    そこに Product Code があるはずなので、そこから新しい GUID (新規コード)を設定してください。
    (「...」ボタンから設定可能です)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク yukaaki 2010年9月14日 2:10
    2010年9月13日 21:12
    モデレータ

すべての返信

  • 2 番目のソフトのセットアッププロジェクトは、1 番目のソフトのものをコピーして作ったのではありませんか?

    セットアッププロジェクトには ProductCode と呼ばれる ID(GUID) が設定されており、それによって同じソフトか、違うソフトかを区別しています。
    コピーして作るとお手軽ですが、そういった問題を抱えると言うことになります。

    解決方法としては、ソリューションエクスプローラでセットアッププロジェクトを選択し、そこでプロパティペインを開いてください。
    (注意:右クリックからのプロパティだと違う画面になります。F4 キーを押すと目的の画面が出てくるかも。)
    そこに Product Code があるはずなので、そこから新しい GUID (新規コード)を設定してください。
    (「...」ボタンから設定可能です)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク yukaaki 2010年9月14日 2:10
    2010年9月13日 21:12
    モデレータ
  • Azuleanさん、ご回答ありがとうございました。

    おかげで解決しました。

    ただ、1点すこし奇妙な点もありましたので報告しておきます。

    教えていただいたProductCodeを変更することによって、それまで拒否されていたところは無事に通過しました。

    ところが、インストールするフォルダの指定まで終わって、インストールをスタートしたとたんに「このバージョンより新しいバージョンがインストール済みなのでインストールできません」と拒否されてしまいました。

    そこで上記ProductCodeの少し下にあるUpgradeCodeを変更してみたところ、すべて解決しました。

    ProductCodeが違えば、UpgradeCodeは関係ないように思えるのですが … とりあえず、複数のPCで動作確認を行い問題ないようですので、解決したものと判断しております。

    2010年9月14日 2:46
  • ProductCodeが違えば、UpgradeCodeは関係ないように思えるのですが … とりあえず、複数のPCで動作確認を行い問題ないようですので、解決したものと判断しております。

    UpgradeCode も同系統の製品かどうか判別するために使われています。
    http://msdn.microsoft.com/ja-jp/library/465253cd(VS.90).aspx

    たとえば、RemovePreviousVersions では UpgradeCode と ProductCode を使っています。
    http://msdn.microsoft.com/ja-jp/library/yys0tfd0(VS.90).aspx

    (InstallShield 公認ガイドブックによると)
    UpgradeCode が同じで ProductCode が異なる場合、メジャーアップグレードという扱いになり、前のバージョンをアンインストールしてからインストールする形になります。
    UpgradeCode が同じで、ProductCode も同じ場合、バージョン番号が上がっていればマイナーアップグレードという形になります。
    バージョンまでも同じ場合は、スモールアップグレードという形になります。

    このように、UpgradeCode が同じ場合は同一系統の製品として取り扱われるように設計されています。
    それぞれのアップグレードの挙動の差については説明できかねますので、お手数ですが、インストーラ関連の情報を集めてください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2010年9月16日 1:47
    2010年9月14日 13:57
    モデレータ
  • Azuleanさん、再度ご回答いただきありがとうございます。

    ProductCodeだけでなく、UpgradeCodeも影響していたのですね。

    納得できました。ありがとうございました。 

    2010年9月16日 3:52