0

CE5 および WM6 で実行されるインストーラーにいくつかのカスタム アクションを追加しました。このインストーラーは正常に動作し、正常にビルドされます。ただし、1 つの煩わしさがあります。setup.dll はデバイスに展開され、このファイルは必要ありません。

setup.dll ファイル、MSDN、さらにはモバイル SDK の作成に関する Web サイトをいくつか読みました。それらはすべて同じ一連の手順を示しています。

  1. C++ dll プロジェクトを作成します。
  2. 出力の名前が setup.dll であることを確認します。
  3. cab プロジェクトで CE セットアップ DLL をクリックし、アプリケーション フォルダを参照して、出力を追加し、セットアップ プロジェクトを選択します。(ローカル ディレクトリは選択できません。常にターゲット マシン上のディレクトリです)

これで動作し、カスタム キャブ インストーラが生成されます。ただし、前述のように、setup.dll はアプリケーション フォルダーにコピーされますが、インストール後には必要ありません (アンインストールの場合でも)。

プロパティで exclude を true に設定して、setup.dll を除外しようとしました。setup.dll としてビルドするための cab ファイルが欠落しているため、これにはファイルが含まれていないだけです。

そのため、私がたどり着いた唯一の解決策は、cab .inf ファイルを手動で変更することです。

[DefaultInstall]
CEShortcuts=Shortcuts
AddReg=RegKeys
CopyFiles=Files.Common1,Files.Common2,Files.Common3,Files.Common4
CESetupDLL="Setup.dll"

[DefaultInstall]
CEShortcuts=Shortcuts
AddReg=RegKeys
CopyFiles=Files.Common1,Files.Common2,Files.Common3
CESetupDLL="Setup.dll"

Files.Common4 は、マシン上でローカルに setup.dll ファイルを指していました。この変更を行うと、cab ファイルの作成に使用されますが、ファイルはコピーされません。

Visual Studio でこの変更を行う方法はありますか、それとも常に .inf ファイルを手動で編集し、cabwiz.exe を使用して cab ファイルを手動でビルドすることになりますか?

4

1 に答える 1

1

私は少し混乱しています。setup.dll インストーラー拡張機能を作成して CAB に含めましたが、デバイスには入れたくないですか? CAB 抽出中にカスタム アクションを実行するには、DLL が CAB 内にあり、デバイス上で抽出される必要があります。

デバイスに必要ない場合は、単純に CopyFiles から省略し、INF から CESetupDLL エントリを削除します。明らかにこれを行うと、それが定義するカスタムアクションが実行できないことを意味します。

明確にするために、参照しているこのDLLは、インストールおよび/またはアンインストール中のデバイス上のカスタムアクション用です。デスクトップ機能は提供されません。

于 2010-09-15T03:00:14.587 に答える