1

既存のInstallShieldMSIプロジェクトにファイルを追加し、MSIを構築してから、そこからMSPを作成して、既存のインストールに適用します。

問題は、MSIプロジェクトに新しいファイルを追加するときに、シーケンス番号が段階的に設定されないことです。ダイレクトエディターに移動し、シーケンス番号を編集して、古いものが停止したところから開始するようにしましたが、プロジェクトをビルドするときに、入力したシーケンス番号は無視されます。このようにシーケンス番号が異なると、MSPが正しくインストールされません。

InstallShieldによって上書きされるシーケンス番号を修正する方法はありますか?プロジェクトに新しいファイルを追加しない場合、既存のファイルのシーケンス番号は同じままです。追加する新しいファイルが「途中」にインストールされているようです。

何かご意見は?

ありがとう

4

3 に答える 3

2

いくつかの問題かもしれません...

私の記憶が正しければ、以前の MSI パッケージを指すために使用されたプロパティを設定した後で、新しい MSI をビルドする必要があると思います。これにより、新しいパッケージは古いパッケージと同じファイル ID を使用するようになります。

それでも問題が解決しない場合は、新しいファイルをパッケージに追加する方法 (外部 CAB ファイルはありますか?) と、「バイナリ」をビルドするためのパッチ ビルド オプションの組み合わせに関係がある可能性があります。パッチ

于 2011-04-14T01:01:14.143 に答える
1

プロジェクトをXML 形式で保存してみてください。内部の「順序付けされていない」データベースの順序にはいくつかの奇妙な点があり、これで解決できます。この方法で最初の保存、終了、再読み込みを行った後、必要に応じてバイナリ プロジェクトに戻すことができます。新しいファイルを追加した後にこれを試みる場合は、ファイル テーブルの XML でレコードを並べ替えるか、これを試みる前にレコードを削除してください。

于 2011-04-14T13:30:27.093 に答える
0

これらのシーケンス番号は、順番に設定する必要はありません。実際、ほとんどの場合、すべてのアイテムのすべての番号を変更せずに再シーケンスできるようにするために、Windows インストーラーのさまざまなシーケンス番号に 10 の増分を使用する傾向があります。これらの数値をいじらないでください。Installshield に制御させてください。

user707082は正しいです。MSI の以前のビルドを指定して、 Installshieldが新しいセットアップの GUID を同期できるようにする必要がありますが、これは通常、動的に生成されたコンポーネント用であり、手動でオーバーライドして Windows インストーラー コンポーネントの規則に違反した場合、パッチは失敗する可能性があります。 .

パッチを機能させるには、いくつかの経験則に従います。

  • ファイルごとに 1 つのコンポーネント
  • 変更された絶対ファイル パスは、新しいコンポーネント GUID を意味します
  • 絶対インストール パスを変更しないファイルのコンポーネント GUID を変更しない
  • Installshield の動的ファイル リンクを使用しないでください
  • すべてのコンポーネント作成規則に従います (多くの規則があります。SDK を参照してください)。
  • フル ファイル パッチのみを使用し、バイナリ パッチは使用しないでください
  • さらに、今思い出せないものもいくつかあります。これは私の開発者システムではありません
于 2011-04-24T00:10:29.967 に答える