0

このプロジェクトは、Installshield 2008 Premier Edition の InstallScript MSI プロジェクトを使用して開発されました。プロジェクトでは、古いバージョンが上位バージョンにインストールされないように条件を追加しました。

私たちが直面している問題は、製品バージョンが 1.0.0925.1 になり、より高いバージョンよりも低いバージョンを避けるために条件が追加された新しいプロジェクトを検討することです。その条件を追加するには、上記のリンクから取得しました。これに加えて、メジャー アップグレードの [共通] タブで、アップグレード プロンプトを有効にしました。将来の新しいセットアップには 1.0.0925.2 が付属しているため、アップグレードを要求する必要があります。

ここで、製品バージョン 1.0.0925.2 で新しいセットアップを作成し、メジャー アップグレードの [共通] タブでプロンプトを無効にします。ユーザーが 1.0.0925.2 の上に 1.0.0925.1 をインストールしようとすると、許可されません。その場合、正常に動作しています。「この製品の別のバージョンが既にインストールされています。このバージョンのインストールを続行できません。この製品の既存のバージョンを構成または削除するには、コントロール パネルの [プログラムの追加と削除] を使用してください。」{2D0E6C46-1CC2-4174-8AAC -0B39312D8ECE}"

数日後に変更があり、バージョン 1.0.0925.3 で別のセットアップが作成され、アップグレードのプロンプトが無効になります。ここで、1.0.0925.2 の上に 1.0.0925.3 をインストールしようとしましたが、明らかにアップグレードが必要です。しかし、ここで問題が発生し、「セットアップはアップグレードを実行します」と尋ねる代わりに、「この製品の別のバージョンが既にインストールされています。このバージョンのインストールは続行できません。この製品の既存のバージョンを構成または削除するには、追加と削除を使用します。コントロール パネルのプログラム。{2D0E6C46-1CC2-4174-8AAC-0B39312D8ECE}" 1.0.0925.2 のプロンプトを無効にしたため、アップグレードできません。これを有効にすると、アップグレードが要求されるたびにセットアップが実行されます。

Installscriptで製品バージョンを確認することも考えましたが、すでにインストールされているセットアップの製品バージョンと現在実行中のセットアップを取得できた場合、どのようにアプローチすればよいかわかりません。しかし、設計時に設定されているため、実行時にアップグレードのプロンプトを変更するにはどうすればよいですか。

4

2 に答える 2

6

Windows インストーラーを使用している場合は、バージョン番号を再考する必要があります。Windows インストーラーは、インストール パッケージのmajor.minor.buildのみを認識します (ただし、ファイルはmajor.minor.build.revisionを使用できますが、インストーラー自体は使用できません)。

したがって、Windows インストーラーの観点から見ると、1.0.0925.1 と 1.0.0925.2 はどちらも実際には 1.0.0925 です。同じ製品コードを持っている場合、標準の「この製品の別のバージョンが既にインストールされています」というメッセージが表示されます。ダイアログ。

基本的にアップグレードをサポートしたい場合は、メジャー.マイナー.ビルドのバージョン番号を変更してください。4 番目の「リビジョン」フィールドは、内部でベータ インストーラーを識別するために使用されますが、新しいバージョンをインストールするには、以前のバージョンをアンインストールする必要があります。アップグレードは、最初の 3 つのフィールドのいずれかを変更し、アップグレードを適切に構成するパブリック リリースに対してのみサポートされます。

于 2009-06-16T06:33:39.513 に答える
1

あなたが抱えている問題は、ProductCode. まず、メジャー アップグレードとマイナー アップグレードのどちらを行うかを決定する必要があります。メジャーアップグレードに落ち着いたようですね。ProductCodeしたがって、ダイレクト エディターを使用してアップグレード テーブルを変更するか、InstallShield IDE の [アップグレード] セクションで新しい [メジャー アップグレード アイテム] を作成して、新しい を生成する必要があります。

于 2009-06-15T13:40:29.780 に答える