Исключить setup.dll из проекта Smart Cab в VS2008

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

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

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

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

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

Таким образом, единственное решение, к которому я пришел - это вручную изменить кабину.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 ответ

Решение

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

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

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

Другие вопросы по тегам