MSIがクリックされたらすぐにファイルをコピーする必要があります。現時点ではCopyFiles関数を使用していますが、十分な速度で実行されていません。独自のカスタムアクションが必要ですか、それともUIが表示される前にそれを移動する方法はありますか?
ありがとう
MSIがクリックされたらすぐにファイルをコピーする必要があります。現時点ではCopyFiles関数を使用していますが、十分な速度で実行されていません。独自のカスタムアクションが必要ですか、それともUIが表示される前にそれを移動する方法はありますか?
ありがとう
regファイルとiniファイルで行われることはすべて、通常、代わりにMSI内に埋め込んで行うことができます。MSIのインストールが中止された場合、MSIファイルには組み込みのロールバックサポートが含まれるため、これは非常に優れています。
Installshieldは、実際にはMSIファイルではない独自のsetup.exeランチャーファイルを提供します。このファイルが、このような一時ファイルをシステムに配置します。これはMSIの時代以前からのレガシー機能であり、本質的に、何よりも貧弱なMSI設計を可能にします。
Chrisが指摘しているように、MSIファイルは、インストールシーケンスが起動されるまで(MSI内のInstallExecuteSequenceのInstallInitializeとInstallFinalizeの間のアクション)、ファイル操作とシステム変更を実行しないでください。
iniファイル情報をIniFileテーブルに入れ、レジストリ情報をレジストリテーブルに入れることをお勧めします。インストールシーケンスの一部としてEXEファイルを実行していますか?
要件の定義と設計が不十分だと思います。これがあなたがしなければならないことの例です:
製品を直接(小売)および間接(付加価値再販業者を通じて)販売する顧客がいます。彼のアプリケーションは、彼、または彼の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インストーラーのベストプラクティスに従います。