1

私は、基本的な MSI プロジェクトを使用して、Installshield を使用して作成しているアプリケーション インストールのアップグレードをどのようにセットアップしたいかをいじっています。

追加の機能/コンポーネントはサポートしていません。ほとんどのアップグレードは、デフォルト コンポーネントからファイル/フォルダを追加/削除するだけです。

アップグレードの作成時にファイル/フォルダーを削除するのが難しいようです。元の setup.ism (つまり、インストールのバージョン 1) をコピーして貼り付けてアップグレードを作成し、元のインストールのすべてのファイル/フォルダーを取得してから、変更を追加/削除します。これは正しいです?または、upgrade.ism には新しく追加/削除されたファイル フォルダーのみを含める必要がありますか?

最初にマイナー アップグレードを試みました。ファイルを削除する方法はわかりましたが (右クリック - 削除してから、RemoveFiles エディターにエントリを追加)、フォルダーを削除する方法はわかりませんでした。何百ものファイルが存在する可能性があるため、RemoveFiles テーブルに各ファイルを手動で追加する必要はありません。アップグレードでフォルダとそのすべての子を削除するにはどうすればよいですか?

また、メジャー アップグレードも試しました。最初にアンインストールするため、ファイルやフォルダーの削除を心配する必要がないため、非常に簡単です。しかし、それが実際にアップグレードであることをユーザーに通知するダイアログが表示されません。

4

1 に答える 1

1

UpgradeTable で定義された Action プロパティを使用して、メジャー アップグレードが発生しているかどうかを検出し、ユーザーにさまざまな UI 要素を提示できます。

ほとんどの人はマイナー アップグレードやパッチを必要としません。ほとんどのアプリケーションでは、メジャー アップグレードが維持するための最も簡単な方法であり、パッケージ全体を出荷することのマイナス面は最小限です。これが問題になるのは、数千または数百万の顧客に出荷される非常に大規模なインストーラーのみです。

マイナー アップグレード中にファイルを削除するには、コンポーネントを「パンクチャ」する必要があります。これを推移的 (InstallShield 条件 reevaluate=true) として作成し、常に false を返す式を指定します。チェックアウト:

マイナー アップグレード中にコンポーネントをアンインストールする

コンポーネントを削除し、RemoveFile テーブルでルールを作成するというアプローチは正しくありません。これは、コンポーネントの規則と参照カウントに違反します。

マイナー アップグレードがどのように機能するか、できることとできないことを学ぶことは良い考えですが、メジャー アップグレードにもっと依存していることに気付いても驚かないでください。

于 2013-11-03T03:28:08.063 に答える