9

VS2010 で InstallShield LE を使用すると障害が発生します。結果の setup.exe を 2 回目に実行すると (バージョン番号が増分されます)、エラーが発生します。

この製品の別のバージョンが既に登録されています

「インクリメントされたバージョン番号」とは、.exe の AssemblyVersion と AssemblyFileVersion でマイナー バージョン、ビルド番号、およびリビジョンをより大きな番号に変更したことを意味します (DLL は「1.0.*」に設定されています)。

[assembly: AssemblyVersion("0.2.103.005")]
[assembly: AssemblyFileVersion("0.2.103.005")]
[assembly: AssemblyInformationalVersion("Alpha 0.1 - 2/8/2011")]

また、Installshield LE セットアップ プロジェクトの [一般情報] タブの製品バージョンを 0.10.0000 から 0.11.0000 に更新しました。

他の SO 投稿や製造元のコミュニティ サポート フォーラムでこのエラー メッセージのインスタンスに遭遇しましたが、私に当てはまる解決策は見つかりませんでした。

4

3 に答える 3

13

答えは、[アップグレードパス]タブでエントリを作成することです。これを行うと、InstallShieldLEはファイル選択ダイアログを表示します。古いインストーラーを使用している場合は、おそらくそれを参照して、アップグレードできるバージョンに関する情報を取得できます。私の場合、古いインストーラーが手元になかったので、キャンセルを押すと、とにかく新しいアップグレードパスエントリが作成されました。次に、そのエントリのプロパティを調整して、アップグレードの最小バージョンと最大バージョンを指定しました。すべてが期待どおりに機能しました。

編集

(@lookatmikeのコメントから)

また、[一般情報]タブで製品バージョンと(やや直感に反する)製品コードを変更する必要があります。アップグレードコードは同じままである必要があります。

于 2011-02-13T17:52:21.503 に答える
7

わかりました - この問題は私を夢中にさせていました - そして私は完璧な答えをオンラインで見つけられませんでした.

それで、私はめちゃくちゃになったと決めました。

これは、問題を解決するための「最良の」方法ではない可能性があります。「これを適切に処理する」ための複雑な MSI ベースの方法があると確信していますが、私はそれを理解できませんでした (私はばかだと思いますか?)

基本的に、インストーラーは .NET がインストールされていることを確認し、いくつかのファイルを Program Files ディレクトリにコピーし、いくつかのレジストリ エントリ、ショートカットなどを追加します。

インストール手順がより複雑な場合は、別の場所で「正しい」答えを見つけることをお勧めします。しかし、私が持っているような単純なものの場合 (そして、この問題に苦しんでいる人の 95% が持っていると思います)、これは問題なく機能します。

まず、「商品コード」には絶対に触れないでください。これは MSI 全体で正しい手順だと思います... 製品コードを変更するべきではありません。そして、このソリューションもそれに依存しています。

次へ - 製品コードをクリップボードにコピーします。すぐに必要になります。

基本的に、製品がマシン上に既に存在する場合、製品を常にアンインストールするように InstallShield に指示します。

ここに画像の説明を入力

ここに画像の説明を入力

あなたまたはあなたのパートナーがインストールを SILENTLY で実行したことがある場合は、必ず両方の場所で実行してください。

ここに画像の説明を入力

[ファイル名とコマンド ライン] には、次のように入力します。

msiexec /uninstall {YOUR PRODUCT CODE HERE} /passive

それでおしまい。これで、インストーラーは常に古いバージョンをアンインストールします。

注:これにより、「新しいバージョンのインストーラーを実行していますか」というチェックが無効になります。

于 2012-03-18T17:56:00.560 に答える