3

MSIがクリックされたらすぐにファイルをコピーする必要があります。現時点ではCopyFiles関数を使用していますが、十分な速度で実行されていません。独自のカスタムアクションが必要ですか、それともUIが表示される前にそれを移動する方法はありますか?

ありがとう

4

2 に答える 2

4

regファイルとiniファイルで行われることはすべて、通常、代わりにMSI内に埋め込んで行うことができます。MSIのインストールが中止された場合、MSIファイルには組み込みのロールバックサポートが含まれるため、これは非常に優れています。

Installshieldは、実際にはMSIファイルではない独自のsetup.exeランチャーファイルを提供します。このファイルが、このような一時ファイルをシステムに配置します。これはMSIの時代以前からのレガシー機能であり、本質的に、何よりも貧弱なMSI設計を可能にします。

Chrisが指摘しているように、MSIファイルは、インストールシーケンスが起動されるまで(MSI内のInstallExecuteSequenceのInstallInitializeとInstallFinalizeの間のアクション)、ファイル操作とシステム変更を実行しないでください。

iniファイル情報をIniFileテーブルに入れ、レジストリ情報をレジストリテーブルに入れることをお勧めします。インストールシーケンスの一部としてEXEファイルを実行していますか?

于 2012-08-21T23:33:28.827 に答える
2

要件の定義と設計が不十分だと思います。これがあなたがしなければならないことの例です:

製品を直接(小売)および間接(付加価値再販業者を通じて)販売する顧客がいます。彼のアプリケーションは、彼、または彼のVARまたはそのエンドユーザーの顧客が、次のような属性でMSIを拡張/変更/オーバーライドできるという要件を持っているという点で拡張可能です。

1)UpgradeCode

2)ProductName

3)ライセンス契約

4)アイコン

5)構成ファイル

6)デジタル証明書

私の顧客はC#でウィザードUIを作成し、ユーザーにこれらすべてをガイドし、WiX DTFライブラリ(Microsoft.Deployment.WindowsInstaller)を使用してMSIと対話するライブラリを作成しました。その結果、MSIがバリエーションに変換されるプロセスを完全にカプセル化するユーティリティが作成されます。

これは、SymantecAntivirusも同様に機能する方法です。

ある程度の開発期間があれば、更新されたProductNameおよびRegistryテーブルエントリを使用してMSIを構築するようにユーザーをガイドできます。結果として得られるMSIは、カスタムアクションを必要とせず、適用可能なすべてのWindowsインストーラーのベストプラクティスに従います。

于 2012-08-22T11:47:21.400 に答える