从VS2008中的Smart Cab项目中排除setup.dll

时间:2010-09-08 09:18:03

标签: visual-studio-2008 windows-mobile installer cab cabwiz

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

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

  1. 创建您的C ++ DLL项目。
  2. 确保 输出称为setup.dll。
  3. 在您的cab项目上单击CE Setup DLL,浏览,应用程序文件夹,添加输出并选择您的安装项目。 (您无法选择本地目录,它始终是目标计算机上的目录)
  4. 现在这确实有效,并生成自定义的cab安装程序。但是如上所述,setup.dll被复制到应用程序文件夹中,即使安装后不需要它(甚至不用于卸载)

    我尝试通过在其属性中将exclude设置为true来排除setup.dll。所有这一切都不包括文件一个所有的cab文件,因为setup.dll缺失。

    因此,我到达的唯一解决方案是手动更改驾驶室。来自

    的文件
    [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文件?

1 个答案:

答案 0 :(得分:1)

我有点困惑。您已经创建了一个setup.dll安装程序扩展,并将其包含在CAB中,但您不希望它在设备上?为了在CAB提取期间执行自定义操作,DLL必须位于CAB中并在设备上提取。

如果您不想在设备上使用它,只需从CopyFiles中省略它并从INF中删除CESetupDLL条目。显然,这样做意味着它定义的任何自定义操作都无法运行。

要明确的是,您引用的此DLL用于安装和/或卸载期间的自定义设备上操作。它不会提供任何桌面功能。