Исключить setup.dll из проекта Smart Cab в VS2008 - PullRequest
0 голосов
/ 08 сентября 2010

Я добавил некоторые пользовательские действия в наш установщик, который работает на CE5 и WM6.Этот установщик работает нормально и прекрасно работает.Однако есть одно раздражение.Файл setup.dll развернут на устройстве, и этот файл не требуется.

Я прочитал несколько веб-сайтов о создании файла setup.dll, MSDN и даже мобильного SDK.Все они устанавливают один и тот же набор шагов.

  1. Создайте свой проект C ++ dll.
  2. Убедитесь, что вывод называется setup.dll.
  3. В вашем проекте CAB щелкнитев CE Setup DLL перейдите в папку приложения, добавьте вывод и выберите ваш проект установки.(Вы не можете выбрать локальный каталог, это всегда каталог на целевом компьютере)

Теперь это работает и производит специальный установщик кабины.Однако, как уже упоминалось, файл setup.dll копируется в папку приложения, даже если он не требуется после установки (даже для удаления)

Я попытался исключить файл setup.dll, установив для параметра exclude значение true вего свойства.Все это не включает в себя файл a all, поэтому отсутствуют файлы cab, которые нужно создать как файл setup.dll.

Поэтому единственное решение, к которому я пришел, - это вручную изменить 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-файла и ручная сборка CAB-файла с помощью cabwiz.exe?

1 Ответ

1 голос
/ 15 сентября 2010

Я немного растерялся.Вы создали расширение установщика setup.dll и включили его в CAB, но не хотите, чтобы оно было на устройстве?Чтобы ваши пользовательские действия выполнялись во время извлечения CAB, DLL должна быть в CAB и извлечена на устройстве.

Если вы не хотите, чтобы это происходило на устройстве, просто пропустите ее из CopyFilesи удалите запись CESetupDLL из INF.Очевидно, что в таком случае выполнение любых пользовательских действий, которые он определяет, не может быть выполнено.

Для ясности, эта DLL-библиотека, на которую вы ссылаетесь, предназначена для пользовательских действий на устройстве во время установки и / или удаления.Он не будет предоставлять никаких функций рабочего стола.

...