0

我在 CE5 和 WM6 上运行的安装程序中添加了一些自定义操作。该安装程序工作正常并且构建良好。然而,有一个烦恼。setup.dll 已部署到设备,此文件不是必需的。

我已经阅读了几个关于创建 setup.dll 文件、MSDN 甚至移动 SDK 的网站。他们都陈述了相同的步骤。

  1. 创建您的 C++ dll 项目。
  2. 确保输出名为 setup.dll。
  3. 在您的 cab 项目上单击 CE 设置 DLL,浏览应用程序文件夹,添加输出并选择您的设置项目。(您不能选择本地目录,它始终是目标机器上的目录)

现在这确实有效并生成了一个自定义 cab 安装程序。然而,如前所述,setup.dll 被复制到应用程序文件夹中,即使安装后不需要它(甚至卸载时也不需要)

我试图通过在其属性中将 exclude 设置为 true 来排除 setup.dll。所有这些都不包括文件a all,因此缺少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 回答