vsWinCeSetUp.docx
- 文档编号:11167763
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:13
- 大小:300.42KB
vsWinCeSetUp.docx
《vsWinCeSetUp.docx》由会员分享,可在线阅读,更多相关《vsWinCeSetUp.docx(13页珍藏版)》请在冰点文库上搜索。
vsWinCeSetUp
VS2005为Windows移动程序创建安装文件
2007-01-02 来源:
天极开发 作者:
维维编译
关键词:
Windows 移动 安装 程序 文件
友情推荐:
VisualStudio2005.NET的第二次震撼
VisualStudio2005支持诸如PocketPC和Smartphone等Windows移动应用程序的开发。
但是,当一个程序开发完了之后,如何将它部署到用户的设备上呢?
在VisualStudio2005中,部署程序到设备上,只需要使用ActiveSync将设备连接到开发机器上并且按下F5即可。
但是这种方法对于终端用户来说还是难以接受的,因为他们习惯了使用GUI方式的安装程序来隐藏安装过程细节。
在本文里,你将学习如何为你的Windows移动应用程序创建CAB文件使得它们可以方便的部署到你的Window移动设备上。
你也将学习如何自定制一个安装包,使得终端用户可以通过台式机上的安装程序来部署程序到Windows移动设备上。
下面是你为一个Windows移动应用程序创建安装包时所需要执行的步骤的概览:
·创建Windows移动应用程序
·将该程序打包为CAB文件
·创建一个自定制的安装程序来安装该Windows移动应用程序
·创建一个setup.ini文件来描述这个Windows移动应用程序及其相关的CAB文件
·创建一个Setup工程来打包CAB文件,自定制的安装程序和setup.ini文件
创建应用程序
本文我使用VisualStudio2005创建了一个简单的WindowsMobile5.0的应用程序,用来演示部署功能。
如果你也想和我一起学习这个demo,在VS中创建一个新的设备应用程序工程并且命名其为C:
\SampleApp,如图1所示。
为了简单起见,这个程序只包含一个按钮控件,当点击时会弹出"HelloPacketPCWorld!
"的消息框。
这个程序的内容不重要,我只是演示如何部署它。
图1
打包CAB文件
部署这个工程的第一步是将这个应用程序打包为一个Cabinet(CAB)文件。
CAB文件可以被部署到设备上,然后解开并安装。
CAB文件是一个可执行的压缩文件,其中包含了你的应用程序,其他相关的DLL文件,资源,帮助文件和其他你所要包含的文件。
在这一步里我不但会创建本程序的CAB文件,我还将进行相关配置,从而在安装程序的时候,一个快捷方式将会被创建在用户的开始菜单里。
创建一个新的工程,选择File->AddProject。
在工程类型栏中,展开OtherProjectTypes节点,选择SetupandDeployment。
选择SmartDeviceCABProject模板。
将新建工程命名为C:
\SmartDeviceCab1,点击确定。
在SolutionExplorer中,点击SmartDeviceCab1工程,设置ProductName属性为MySampleApp,如图2所示。
这将会是你将程序安装到PocketPC上的文件夹的名字。
图2
在SolutionExplore中右键点击SmartDeviceCab1,选择Properties。
设置输出文件名为Debug\SampleApp.cab,如图3。
这是CAB文件的名称和存放位置。
图3
下一步就是对CAB文件进行配置,确定它被部署到用户的PocketPC上时将如何安装。
这里,我将为该程序在用户的PocketPC的开始菜单中添加一个快捷方式,这样用户可以直接从开始菜单里启动程序。
在文件系统面板里,右键点击ApplicationFolder并且选择Add->ProjectOutput…在AddProjectOutputGroup窗口,选择Primaryoutput,点击确定。
右键点击PrimaryoutputfromSampleApp,选择CreateShortcuttoPrimaryoutputfromSampleApp(Active),如图4。
Primaryoutput指的是将要从Sampleapp.cab中释放出来的应用程序,这里我们给它添加一个快捷方式。
图4
将缺省的快捷方式改名为"SampleAppv1."这将是终端用户开始菜单里将要显示的快捷方式的名称(你将在下一步中创建快捷方式)。
在当前窗口里,右键点击FileSystemonTargetMachine,选择AddSpecialFolder->StartMenuFolder。
图5
在当前窗口中SampleAppv1的快捷方式应该是可见的了。
拖动它到StartMenuFolder。
这个目录看起来应该如图6所示。
这一步骤完成的工作是在程序安装时在用户的PocketPC的开始菜单中创建一个快捷方式。
图6
下一步是创建CAB文件。
进入到Build->BuildSmartDeviceCab1来创建CAB文件工程。
CAB文件其实是一个安装程序,但是只有对计算机技术有很多了解的人才知道怎么作。
下一步的工作是创建一个和普通的PC上安装程序类似的基于窗口样式的安装程序。
创建自定制的安装程序
上一步中我们创建了CAB文件。
其实从技术上来说这已经解决了安装问题。
但是用户仍然需要知道如何将CAB文件传输到PocketPC上,然后使用触笔来点击CAB文件启动安装过程。
一个更好的方法是创建一个Windows安装程序来自动化安装过程。
这样做的话,你需要写一些代码来启动WindowsCEAppManager。
AppManager是ActiveSync(用来在PocketPC和计算机之间进行同步的程序,工作在Windows移动设备上,如PocketPC和Smartphone)的一个部分,在PocketPC上完成程序安装的任务。
开始,在当前的solution中添加一个新的工程(File->AddProject)…点击Windowsprojecttype选择ClassLibrary模板。
给工程命名为CustomInstaller并且点击确定。
你需要给你的工程添加两个引用。
在SolutionExplore中右键点击CustomInstaller,并且选择AddReference…需要添加的是System.Configuration.Install和System.Windows.Forms。
System.Configuration.Install命名空间提供了允许你为自己的组件编写自定制的安装文件的类,而System.Windows.Forms命名空间则提供了允许你通过WindowsUI来和用户进行交互(如Messagebox等)的相关类。
在SolutionExplorer中双击Class1.vb,在文件中填入下列代码--SetupApp类:
ImportsSystem.Windows.Forms
ImportsSystem.Diagnostics
ImportsSystem.Reflection
ImportsSystem.IO
ImportsMicrosoft.Win32
PublicClassSetupApp
InheritsSystem.Configuration.Install.Installer
PrivateConstINI_FILEAsString="\setup.ini"
PrivateSubInstaller_AfterInstall(ByValsenderAsObject,_
ByValeAsSystem.Configuration.Install.InstallEventArgs)_
HandlesMyBase.AfterInstall
''---tobeexecutedwhentheapplicationisinstalled---
DimceAppPathAsString=GetWindowsCeApplicationManager()
IfceAppPath=String.EmptyThen
Return
EndIf
DiminiPathAsString=GetIniPath()
Process.Start(ceAppPath,iniPath)
EndSub
PrivateSubInstaller_AfterUninstall(ByValsenderAsObject,_
ByValeAsSystem.Configuration.Install.InstallEventArgs)_
HandlesMyBase.AfterUninstall
''---tobeexecutedwhentheapplicationisuninstalled---
DimceAppPathAsString=GetWindowsCeApplicationManager()
IfceAppPath=String.EmptyThen
Return
EndIf
DiminiPathAsString=GetIniPath()
Process.Start(ceAppPath,String.Empty)
EndSub
PublicSharedFunctionGetWindowsCeApplicationManager()AsString
''---checkiftheWindowsCEApplicationManagerisinstalled---
DimceAppPathAsString=KeyExists()
IfceAppPath=String.EmptyThen
MessageBox.Show("WindowsCEAppManagernotinstalled",_
"Setup",MessageBoxButtons.OK,_
MessageBoxIcon.Error)
ReturnString.Empty
Else
ReturnceAppPath
EndIf
EndFunction
PublicSharedFunctionGetIniPath()AsString
''---getthepathofthe.inifile---
Return""""&_
Path.Combine(Path.GetDirectoryName(_
System.Reflection.Assembly._
GetExecutingAssembly().Location),"Setup.ini")&""""
EndFunction
PrivateSharedFunctionKeyExists()AsString
''---getthepathtotheWindowsCEAppManagerfromtheregistry---
DimkeyAsRegistryKey=_
Registry.LocalMachine.OpenSubKey(_
"SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\CEAPPMGR.EXE")
IfkeyIsNothingThen
ReturnString.Empty
Else
Returnkey.GetValue(String.Empty,String.Empty)
EndIf
EndFunction
EndClass
这个类里包含了调用WindowsCEAppManager应用程序的代码,从而使得你的应用程序可以通过ActiveSync安装到用户的PocketPC上。
SetupApp类包含了2个事件和3个方法:
·Installer_AfterInstall事件:
在安装过程启动后事件触发
·Installer_AfterUninstall事件:
在反安装过程启动后事件触发
·GetWindowsCeApplicationManager:
返回包含WindowsCEAppManager的路径
·GetIniPath:
返回Setup.ini文件的路径
·KeyExists:
通过注册表检查当前机器上是否有WindowsCEAppManager可用。
SetupApp继承了Installer类,并且将RunInstallerAttribute属性设置为true(
因此,VisualStudio的自定制安装程序或InstallUtil.exe将在程序安装时被触发。
在安装时,SetupApp类首先检查是否当前系统里有WindowsCEAppManager。
如果有的话,程序将会通过WindowsCEAppManager安装。
(注:
如果需要详细了解如何在.NET中创建自定制的安装程序,请查阅BuildingCustomInstallerClassesin.NET)。
当添加了这个类之后,就可以创建自定制的安装程序工程了。
右键点击SolutionExplorer中的CustomInstaller,并且选择Build。
创建.ini文件
下一步就是创建一个ini文件来描述你要部署的程序。
这个信息将会被WindowsCEAppManager使用。
用记事本程序编辑一个setup.ini文件,将它保存在C:
\CustomInstaller\目录下。
[ceAppManager]
Version=1.0
Component=SampleApp
[SampleApp]
Description=SampleApplication
Uninstall=SampleApp
CabFiles=SampleApp.cab
(注:
MSDN有一篇很好的参考文献,详细解释了ini文件不同的域的内容)
创建Setup包
在ini文件创建之后,最后一步就是创建一个setup工程来打包所有你早先创建的文件。
在当前的solution中添加一个新的工程,File->AddProject…。
点击SetupandDeployment工程类型,选择SetupProject。
给工程命名为Setup,点击确定。
在SolutionExplorer里右键点击Setup,选择Add->File…给工程添加如下文件(如图7):
·C:
\CustomInstaller\bin\Debug\CustomInstaller.dll
·C:
\SmartDeviceCab1\Debug\SampleApp.CAB
·C:
\CustomInstaller\setup.ini
图7
右键点击SolutionExplorer中的Setup并选择View->CustomActions。
这样会显示所支持的各种自定义动作的类型。
自定义工作编辑器允许你指定在安装过程结束后在目标计算机上所要执行的动作。
在下一步中你要使用自定义动作的Install类型,它将创建安装程序。
在CustomActions面板里,右键点击Install选择AddCustomAction…,如图8。
图8
这个动作将会触发一个对话框窗口弹出,在"Lookin"下拉框中,选择ApplicationFolder,图9所示。
你可以看到list中的CustomInstaller.dll。
选择它并点击确定。
这将会将自定义的安装程序和setup程序联系起来。
图9
这时你所作的仅是右键点击SolutionExplorer中的Setup并且在弹出菜单中选择Build即可。
测试安装
就是它了!
你现在可以测试你做好的安装程序了,进入C:
\Setup\Debug,双击Setup,如图10。
在此以前,请确认你的PocketPC已经通过ActiveSync连接到你的电脑上了。
图10
你将会被询问安装路径;使用缺省的或者你喜欢的目录点击下一步。
按照屏幕上显示的指令去做,如果所有的东西都被配置正确的话,你将会看到从WindowsCEAppManager返回的消息,如图11。
这个消息提示你检查一下你的移动设备的屏幕来确认安装过程成功。
图11
从图12上你可以看到,通过ActiveSync的连接,你现在已经成功的将程序安装到你的PocketPC上了。
图12
小提示:
注意如果开始菜单比较满包含了很多项,那么"SampleAppv1"项不会出现在开始菜单;而是会出现在程序目录里,如图13。
当然,你可以通过ActiveSync来进入\Windows\StartMenu\目录,删除掉不需要的项和快捷方式以及其他任何文件。
图13
结束语
为你的用户创建一个更好的安装体验看起来像是一件很"多余"的事情,但是你最好是将它作为必不可少的一件事。
这样可以帮助更多的用户来使用你的程序-减少不熟悉使用移动设备的用户向客服求助的次数。
这篇文章介绍了如何在PocketPC平台上部署一个移动程序所要做的主要步骤。
这些步骤当然也可以被用来部署Smartphone应用程序,尽管Smartphone也可以通过其他更通用的方式来部署--如通过web服务器和SMS等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vsWinCeSetUp