Windows Mobile Cab Setup для обнаружения .NET CF 3.5 и его установки - PullRequest
8 голосов
/ 13 июля 2009

Я разработал профессиональное приложение для Windows Mobile 6 с использованием целевой платформы, как .NET CF 3.5 и Professional 6 SDK. Также создан его файл SmartDeviceCab. Когда я устанавливаю его на устройство без CF 3.5, оно не запускает мое приложение (потому что устройство имеет .NET CF 2.0). Теперь я знаю, что у меня должна быть NET CF 3.5 на устройстве, где я хочу запустить свое приложение. Как я могу определить текущую версию CF и установить (если требуется) CF 3.5 из моей кабины? Я изучил и прошел много на Setup.dll, но это слишком старый способ, и я не нашел способ запустить файл cab из моего Setup.dll. Пожалуйста, помогите мне найти решение. Был бы признателен, если бы ссылка / образец кода. Больше разочаровывает, я никогда не касался VC ++.

Я прошел через: Определение, установлен ли Compact Framewok на мобильном устройстве и его ссылках.

Шайлеш К.

Ответы [ 8 ]

3 голосов
/ 19 октября 2009

Очень просто. В нем немного кода на C ++, но вам не нужно его вообще менять. Это просто вопрос создания второго проекта cab для интеллектуальных устройств, содержащего файл .NET cab, который вы хотите установить (3.5 в вашем случае), и замену установочной DLL на ту, которая была создана из проекта C ++, включенного в пример. Вы просто добавляете значения реестра, которые описывают, где находятся cab-файлы, которые вы хотите установить, и вы - золотой. Вам не нужно определять, какую версию .NET они установили, просто добавьте ее туда, и она будет установлена ​​поверх любой существующей установки. Существует полный технический документ, который объясняет это в примере, а также исходный код. Просто скачайте Windows Mobile 6 SDK и перейдите в этот каталог на своем компьютере после его установки. Откройте документ с названием «MultiCab Whitepaper.doc» и следуйте инструкциям.

C: \ Program Files \ Windows Mobile 6 SDK \ Samples \ Common \ CPP \ Win32 \ multicabinstall

Я использовал это для своего собственного проекта, и он работает НАСТОЛЬКО хорошо!

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

Для этого мы использовали AirSetup, так как он позволяет вам быстро и эффективно устанавливать и работать по цепочке.

http://windowsmobiledn.com/using-spb-airsetup-to-create-pocket-pc-installers/

1 голос
/ 22 сентября 2009

Теперь есть Windows Market Place, поэтому нам не нужно заботиться о необходимых версиях .NET CF. Windows Market Place сделает все необходимое. :)

1 голос
/ 13 июля 2009

Это не совсем ответ на ваш вопрос, но в такой ситуации я бы просто развернул два CAB: мое приложение и .Net CF 3.5 CAB. Это не так сложно сказать клиенту / клиенту установить ваше приложение, и если оно не работает, то установите .Net cab.

1 голос
/ 13 июля 2009

Я полагаю, что в WM 6 (это мог быть WM 5) они не разрешали управлять кабиной из другой кабины. Единственный способ сделать все это за один раз - через MSI с рабочего стола. Есть примеры MSDN о том, как это начать.

В моем приложении я определяю версию .NET CF в моей кабине. Если они не имеют права, я не могу установить и говорю пользователю установить с рабочего стола. Это не самое лучшее решение, но MS на самом деле не дает нам выбора.

0 голосов
/ 17 мая 2010

Для этого я использовал NSIS. Прошло несколько месяцев с тех пор, как я написал скрипт установки, поэтому некоторые детали должны быть нечеткими.

Сначала я устанавливаю .NET CF 3.5. Я использую файл NETCFSetupv35.msi, который автоматически установит .NET CF 3.5 на мобильное устройство, если оно еще не существует. Если .NET CF 3.5 уже существует, он показывает диалоговое окно, в котором говорится, что он уже существует (для нас это было приемлемо). Вы можете найти / написать приложение, которое установит возвращаемое значение, которое может быть прочитано ExecWait (http://nsis.sourceforge.net/Docs/Chapter4.html),, а затем вызвать MSI, только если .NET CF не установлен.

Затем у меня есть 8 кабин для установки, 3 для SQL Server Compact 3.5 (обязательно) и 4 для программного обеспечения, от которого мы зависим (необязательно, в зависимости от клиента), и 1 для нашего приложения. Я следовал этому руководству: http://nsis.sourceforge.net/NSIS_for_Smartphone. Написал раздел для каждого, если вы хотите только чтение, то добавьте SectionIn 1 RO после раздела. Затем вызовите CeAppMgr, передавая в качестве аргумента каждую CAB.

0 голосов
/ 14 июля 2009

Использовали ли вы какие-либо специфичные для .NET 3.5 API-интерфейсы, которые не позволили бы вам ориентироваться на .NET 2.0 Framework? Если нет (или если это очень мало), я бы рассмотрел просто нацеливание на 2.0.

Вы можете быть удивлены тем, насколько просто изменить версию платформы, на которую вы нацелены (к сожалению, вы не можете просто перейти к Свойствам вашего проекта в обозревателе решений, как вы можете это сделать с другими типами проектов в Visual Studio ). Я бы предложил создать новый проект, ориентированный на 2.0 Framework, и сбросить весь ваш исходный код, скомпилировать и посмотреть, сколько у вас ошибок. Мы надеемся, что примерно через 5-10 минут вы закончите с скомпилированным и запущенным приложением, без проблем с зависимостями .NET Framework.

При планировании мобильного приложения, которое я надеюсь написать, я выбрал .NET 2.0, потому что многие устройства по умолчанию не поставляются с 3.5.

0 голосов
/ 14 июля 2009

Спасибо за ответы. Это действительно разочаровывает, что у MS нет прямого решения для этого. Я бы пошел с MusicGenesis на данный момент. Я могу дать пользователю две кабины (1) MyApp.cab (2) NETCFv35.wm.armv4i.cab. Но я хотел знать, что «NETCFv35.wm.armv4i.cab» будет работать для всех устройств. Я слышал о разных устройствах с разными наборами команд, таких как MISP, ARM и т. Д. Будет ли NETCFv35.wm.armv4i.cab работать на всех Windows Mobile 6 Professional (и выше 6.1, 6.5) или что мне нужно сделать, чтобы заботиться о других устройствах?

Шайлеш К

...