Я добавил некоторые пользовательские действия в наш установщик, который запускается на CE5 и WM6. Этот установщик отлично работает и прекрасно работает. Однако есть одно раздражение. Программа setup.dll развернута на устройстве, и этот файл не требуется.Исключить setup.dll из проекта Smart Cab Project в VS2008
Я прочитал несколько сайтов по созданию файла setup.dll, MSDN и даже мобильного SDK. Все они указывают один и тот же набор шагов.
- Создайте проект C++ dll.
- Убедитесь, что выход называется setup.dll.
- В проекте вашего кабинета щелкните по DL Setup, найдите папку приложения, добавьте вывод и выберите проект установки. (Вы не можете выбрать локальный каталог, его всегда каталог на целевом компьютере)
Теперь это работает и создает пользовательский инсталлятор кабины. Однако, как уже упоминалось, файл setup.dll копируется в папку приложения, даже если он не требуется после установки (даже для удаления)
Я попытался исключить файл setup.dll, установив исключение в true в его свойствах , Все это не включает файл a, поэтому файлы 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 локально на машине. Выполнение этого изменения означает, что он используется для создания файла кабины, но файл не копируется.
Есть ли способ сделать это изменение в визуальной студии, или это всегда будет ручное редактирование файла .inf и ручной сборка файла кабины с помощью cabwiz.exe?
Это именно то, чего я пытаюсь достичь. Используйте setup.dll для создания CAB-файла, но не скопируйте его на устройство. Я тоже не думал, что пользовательские действия будут выполняться без DLL. Но используя описанное выше решение setup.dll не установлено на устройстве (оно не помечено как скопированное), но при удалении мои пользовательские действия, похоже, запускаются. Его единственная незначительная проблема, которую я думал, будет легко исправить, и я упустил что-то очевидное. – JonWillis
Устройство не волшебное. Пользовательское действие не может произойти без присутствия DLL на устройстве, поскольку он должен запускать некоторый код. Теперь, возможно, это не так, как вы думаете, но это абсолютно необходимо. Я предполагаю, что это как-то заканчивается в папке \ Windows - возможно, это работает версия, которую вы оттолкнули отладчиком.Я бы точно проверил CAB на полностью чистом (то есть был жестком сбросе) устройстве. – ctacke
Я действительно задавался вопросом, как ему удалось запустить код деинсталляции без присутствия DLL, я согласен, что он должен где-то запускать собственный код ... Я предполагаю, что это было волшебным образом сохранено в другом месте, и установка файла setup.dll в папку приложения была излишней для требований , заданный при удалении файла кабины, запись данных о файлах хранится где-то в системе для wceload.exe для использования при удалении. Чистая загрузка ОС - единственный способ проверить это, чтобы убедиться, что она кэшируется из предыдущей установки. Я пытаюсь сделать это сейчас ... – JonWillis