3

InstallShieldProXを使用してインストールパッケージを作成しています。アップグレードは正しく機能します。ただし、製品マネージャーは、ファイルの作成日!=変更日であっても、アップグレードですべてのファイルを置き換えることを望んでいます。

これを行うには、vomusではなくREINSTALLMODE=vamusを設定する必要があることがわかります。ただし、InstallShieldにその設定を使用するように指示する方法がわかりません。デフォルトでは、setup.exeは常にvomusをWindowsインストーラーに渡します。

InstallShieldプロジェクトにReinstallModeTextという名前のプロパティがあり、omusからamusに変更しましたが、効果がないようです。

では、setup.exeがアップグレードの実行を検出すると、REINSTALLMODE = vamusを送信するように、インストールプロジェクトで何を設定すればよいですか?ありがとう。

更新:[リリース]セクションのMSIコマンドライン値に次を追加しようとしました。

REINSTALLMODE = vamus

これは機能しませんでした。Setup.exeは、コマンドラインでREINSTALL=ALLを設定しませんでした。これをMSIコマンドラインに追加すると、アップグレードは期待どおりに機能しました。ただし、問題は、それが新規インストールである場合、それらのプロパティはまだ設定されており、インストーラーが失敗することです。

4

4 に答える 4

3

REINSTALLMODE をamusまたはvamusに設定しないでください(強制的にファイルを上書きします)。これらの設定は MSI のすべてのコンポーネントに適用されるため、理論的にはシステム ファイルまたは少なくとも共有ファイルをダウングレードできます。これには通常、マージ モジュールを介して含まれるファイルが含まれます。通常、REINSTALLMODEemusに設定するのが安全です(ファイルをより低いバージョン番号または同等のバージョン番号に置き換えます)。これでも、Windows リソース保護を備えた新しいバージョンの Windows でシステム保護されたファイルを上書きしようとすると、ファイル置換エラーが発生する可能性があります( wikipedia) (Windows Server 2008 および Vista 以降)。古いバージョンの Windows では、ファイルが上書きされた後、 Windows ファイル保護機能を使用して dllcache から正しいバージョンに復元される可能性がありました。システム ファイル チェック用の関連ツールがありました (現在もあり):システム ファイル チェッカー

ファイルが編集されていても置き換える必要がある問題がある場合は、RemoveFile テーブルを使用して、インストール中にファイルを削除するようにスケジュールすることができます (その後、再インストールされます)。

本当の解決策は、%ProgramFiles% のインストール フォルダーを読み取り専用と見なし、アプリケーションで設定を保存したり、ファイルを変更したりしないようにすることです。すべての構成ファイルはユーザー プロファイルまたは alluser プロファイルに移動する必要があり、アプリケーション EXE ファイルはプロファイルの場所へのコピーを担当する必要があります。

ここで私の答えを見てください。

于 2009-07-03T18:21:05.193 に答える
2

これをさらに調査し、より多くのオプションをテストする中で、最良の答えは、製品バージョンに加えて製品コードを変更し、最初に以前のバージョンを削除してから新しいファイルをインストールするメジャー アップグレードとして作成することだと思います。

これに関する主な問題は、インストーラーの実行に時間がかかることです。また、これをパッチとして発行することはできないと思いますが、その点では間違っている可能性があります。

于 2009-09-18T17:09:30.023 に答える
1

「amus」で ReinstallModeText を使用したと述べました。「vamus」に等しい ReinstallModeText を試しましたか。「v」により、インストーラーはキャッシュされたパッケージではなくソースパッケージから実行されます。これが問題である可能性があります。

于 2009-06-03T03:18:45.330 に答える
1

IS X は手元にありませんが、InstallShield の新しいバージョンでは、[リリース] に移動し、リリースを強調表示して、[Setup.exe] セクションに移動すると、[MSI コマンド ライン引数] というフィールドが表示されます。ここで、Setup.exe が Windows インストーラーに渡すコマンド ライン引数を指定します。例: REINSTALLMODE=vamus

于 2009-06-03T03:13:11.130 に答える