Windows Mobile Cab安装程序用于检测.NET CF 3.5并安装它

时间:2009-07-13 12:50:43

标签: .net .net-3.5 windows-mobile

我使用目标框架作为.NET CF 3.5和专业6 SDK开发了windows mobile 6专业应用程序。还创建了它的SmartDeviceCab文件。当我在没有CF 3.5的设备上安装它时,它无法运行我的应用程序(因为该设备具有.NET CF 2.0)。 现在我知道我必须在要运行我的应用程序的设备上安装NET CF 3.5。 如何检测当前版本的CF并从我的驾驶室设置中安装(如果需要)CF 3.5。我已经探索过很多关于Setup.dll但是它的方法太旧了,我没有找到从我的Setup.dll运行cab文件的方法。请帮我找到解决方案。如果提供链接/示例代码,将不胜感激。更令人沮丧的是,我从未接触过VC ++。

我经历过: Detecting if the Compact Framewok is installed on mobile device及其链接。

Shailesh K。

8 个答案:

答案 0 :(得分:3)

很简单。它有一些C ++代码,但您根本不必更改它。这只是创建第二个智能设备cab项目的问题,该项目包含您要安装的.NET cab文件(在您的情况下为3.5),并交换安装DLL,用于从示例中包含的C ++项目创建的安装DLL。您只需添加描述您要安装的cab文件的位置的注册表值,您就是金色的。您无需检测已安装的.NET版本,只需将其放入其中,它将安装在任何现有安装的顶部。有一份完整的白皮书可以在示例中解释它,以及源代码。只需下载Windows Mobile 6 SDK并在安装后导航到计算机上的此目录。打开标题为“MultiCab Whitepaper.doc”的文档,然后按照说明进行操作。

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

我将它用于我自己的项目,它运作良好!

答案 1 :(得分:1)

在WM 6中,我相信(可能是WM 5),他们不允许从另一辆驾驶室内驾驶出租车。一次性完成所有操作的唯一方法是通过桌面上的MSI。有关如何开始的MSDN样本。

我在我的应用程序中执行的操作是检测驾驶室中的.NET CF版本。如果他们没有正确的,我安装失败并告诉用户从桌面安装。这不是最好的解决方案,但MS并没有给我们一个选择。

答案 2 :(得分:1)

这不是你问题的真正答案,但在这种情况下,我只会部署两个CAB:我的应用程序和.Net CF 3.5 CAB。告诉客户/客户安装您的应用程序并不难,如果它无法安装.Net cab。

答案 3 :(得分:1)

现在Windows Market Place就在那里,所以我们不需要关心所需的.NET CF版本。 Windows Market Place将执行所需的操作。 :)

答案 4 :(得分:1)

我们已经使用了AirSetup,因为它可以让你链接安装并且工作得非常好而且速度很快。

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

答案 5 :(得分:0)

感谢您的回复。毫无疑问,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)或者我需要做些什么才能处理其他设备?

Shailesh K

答案 6 :(得分:0)

您是否使用过任何.NET 3.5特定的API来阻止您使用.NET 2.0 Framework?如果不是(或者如果它很少),我会考虑只针对2.0。

您可能会感到惊讶的是,更改您所针对的框架的版本是多么容易(遗憾的是,您不能像在Visual Studio中使用其他项目类型一样转到解决方案资源管理器中的Project节点的属性)。我建议制作一个针对2.0 Framework的新项目,并删除所有源代码,编译,并查看你有多少错误。希望在大约5到10分钟内完成一个已编译和运行的应用程序,不再有.NET Framework依赖性问题。

在计划我希望编写的移动应用程序时,我选择坚持使用.NET 2.0,因为默认情况下有很多设备没有附带3.5。

答案 7 :(得分:0)

为此,我使用了NSIS。我编写安装脚本已经有几个月了,所以一些细节应该是模糊的。

首先我安装.NET CF 3.5。我使用文件NETCFSetupv35.msi,它会自动在移动设备上安装.NET CF 3.5(如果它尚不存在)。如果.NET CF 3.5已经存在,它会显示一个对话框,说明它已经存在(对我们来说这是可以接受的)。您可以找到/编写一个应用程序,该应用程序将设置可由ExecWait(http://nsis.sourceforge.net/Docs/Chapter4.html)读取的返回值,然后仅在未安装.NET CF时调用msi。

然后我有8个cab安装,3个用于SQL Server Compact 3.5(必需),4个用于我们依赖的软件(可选,取决于客户端),1个用于我们的应用程序。我遵循了本教程:http://nsis.sourceforge.net/NSIS_for_Smartphone。为每个部分写了一个部分,如果你想要readonly然后在部分之后添加SectionIn 1 RO。然后调用CeAppMgr作为参数传递每个CAB。