VS2005为Windows移动程序创建安装文件(转载)

原创 2007年09月22日 17:31:00
 

HTML Tags and JavaScript tutorial



VS2005为Windows移动程序创建安装文件(转载)





http://www.itmm.com.cn/soft/2006-05/17/1147832843d21205.shtml
 
Visual Studio2005支持诸如Pocket PC和Smartphone等Windows移动应用程序及其相关的CAB文件
  ·创建一个Setup工程来打包CAB文件,自定制的安装程序和setup.ini文件
  
创建应用程序
  本文我使用Visual Studio2005创建了一个简单的Windows Mobile5.0的应用程序,用来演示部署功能。如果你也想和我一起学习这个demo,在VS中创建一个新的设备应用程序工程并且命名其为C:/SampleApp,如图1所示。为了简单起见,这个程序只包含一个按钮控件,当点击时会弹出"Hello Packet PC World!"的消息框。这个程序的内容不重要,我只是演示如何部署它。




图1



  
打包CAB文件
  部署这个工程的第一步是将这个应用程序打包为一个Cabinet(CAB)文件。CAB文件可以被部署到设备上,然后解开并安装。CAB文件是一个可执行的压缩文件,其中包含了你的应用程序,其他相关的DLL文件,资源,帮助文件和其他你所要包含的文件。
  在这一步里我不但会创建本程序的CAB文件,我还将进行相关配置,从而在安装程序的时候,一个快捷方式将会被创建在用户的开始菜单里。 创建一个新的工程,选择File->Add Project。在工程类型栏中,展开Other Project Types节点,选择Setup and Deployment。选择Smart Device CAB Project模板。将新建工程命名为C:/SmartDeviceCab1,点击确定。
  在Solution Explorer中,点击SmartDeviceCab1工程,设置ProductName属性为MySampleApp,如图2所示。这将会是你将程序安装到PocketPC上的文件夹的名字。




图2



  在Solution Explore中右键点击SmartDeviceCab1,选择Properties。设置输出文件名为Debug/SampleApp.cab,如图3。这是CAB文件的名称和存放位置。




图3



  下一步就是对CAB文件进行配置,确定它被部署到用户的PocketPC上时将如何安装。这里,我将为该程序在用户的PocketPC的开始菜单中添加一个快捷方式,这样用户可以直接从开始菜单里启动程序。
  在文件系统面板里,右键点击Application Folder并且选择Add->Project Output…在Add Project Output Group窗口,选择Primary output,点击确定。
  右键点击Primary output from SampleApp,选择Create Shortcut to Primary output from SampleApp(Active),如图4。Primary output指的是将要从Sampleapp.cab中释放出来的应用程序,这里我们给它添加一个快捷方式。




图4



  将缺省的快捷方式改名为"SampleApp v1."这将是终端用户开始菜单里将要显示的快捷方式的名称(你将在下一步中创建快捷方式)。
 
  在当前窗口里,右键点击File System on Target Machine,选择Add Special Folder->Start Menu Folder。




图5



  在当前窗口中SampleAppv1的快捷方式应该是可见的了。拖动它到Start Menu Folder。这个目录看起来应该如图6所示。这一步骤完成的工作是在程序安装时在用户的PocketPC的开始菜单中创建一个快捷方式。




图6



  下一步是创建CAB文件。进入到Build->Build SmartDeviceCab1来创建CAB文件工程。CAB文件其实是一个安装程序,但是只有对计算机技术有很多了解的人才知道怎么作。下一步的工作是创建一个和普通的PC上安装程序类似的基于窗口样式的安装程序。
  
创建自定制的安装程序
  上一步中我们创建了CAB文件。其实从技术上来说这已经解决了安装问题。但是用户仍然需要知道如何将CAB文件传输到Pocket PC上,然后使用触笔来点击CAB文件启动安装过程。一个更好的方法是创建一个Windows安装程序来自动化安装过程。这样做的话,你需要写一些代码来启动Windows CE App Manager。App Manager是ActiveSync(用来在Pocket PC和计算机之间进行同步的程序,工作在Windows移动设备上,如Pocket PC和Smartphone)的一个部分,在Pocket PC上完成程序安装的任务。
  开始,在当前的solution中添加一个新的工程(File->Add Project)…点击Windows project type选择Class Library模板。给工程命名为CustomInstaller并且点击确定。
  你需要给你的工程添加两个引用。在Solution Explore中右键点击CustomInstaller,并且选择Add Reference…需要添加的是System.Configuration.Install和System.Windows.Forms。System.Configuration.Install命名空间提供了允许你为自己的组件编写自定制的安装文件的类,而System.Windows.Forms命名空间则提供了允许你通过Windows UI来和用户进行交互(如Messagebox等)的相关类。
  在Solution Explorer中双击Class1.vb,在文件中填入下列代码--SetupApp类:



Imports System.Windows.Forms
Imports System.Diagnostics
Imports System.Reflection
Imports System.IO
Imports Microsoft.Win32
<System.ComponentModel.RunInstaller(True)> _
Public Class SetupApp
Inherits System.Configuration.Install.Installer
Private Const INI_FILE As String = "/setup.ini"
Private Sub Installer_AfterInstall(ByVal sender As Object, _
ByVal e As System.Configuration.Install.InstallEventArgs) _
Handles MyBase.AfterInstall
 '---to be executed when the application is installed---
 Dim ceAppPath As String = GetWindowsCeApplicationManager
 If ceAppPath = String.Empty Then
  Return
 End If
 Dim iniPath As String = GetIniPath
 Process.Start(ceAppPath, iniPath)
End Sub
Private Sub Installer_AfterUninstall(ByVal sender As Object, _
ByVal e As System.Configuration.Install.InstallEventArgs) _
Handles MyBase.AfterUninstall
 '---to be executed when the application is uninstalled---
 Dim ceAppPath As String = GetWindowsCeApplicationManager
 If ceAppPath = String.Empty Then
  Return
 End If
 Dim iniPath As String = GetIniPath
 Process.Start(ceAppPath, String.Empty)
End Sub
Public Shared Function GetWindowsCeApplicationManager As String
'---check if the Windows CE Application Manager is installed---
 Dim ceAppPath As String = KeyExists
 If ceAppPath = String.Empty Then
  MessageBox.Show("Windows CE App Manager not installed", _
"Setup", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
  Return String.Empty
 Else
  Return ceAppPath
 End If
End Function
Public Shared Function GetIniPath As String
'---get the path of the .ini file---
Return """" & _
Path.Combine(Path.GetDirectoryName( _
System.Reflection.Assembly. _
GetExecutingAssembly.Location), "Setup.ini") & """"
End Function
Private Shared Function KeyExists As String
 '---get the path to the Windows CE App Manager from the registry---
 Dim key As RegistryKey = _
Registry.LocalMachine.OpenSubKey( _
"SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/CEAPPMGR.EXE")
 If key Is Nothing Then
  Return String.Empty
 Else
  Return key.GetValue(String.Empty, String.Empty)
 End If
End Function
End Class


  这个类里包含了调用Windows CE App Manager应用程序的代码,从而使得你的应用程序可以通过ActiveSync安装到用户的Pocket PC上。
  SetupApp类包含了2个事件和3个方法:
  ·Installer_AfterInstall事件:在安装过程启动后事件触发
  ·Installer_AfterUninstall事件:在反安装过程启动后事件触发
  ·GetWindowsCeApplicationManager:返回包含Windows CE App Manager的路径
  ·GetIniPath:返回Setup.ini文件的路径
  ·KeyExists:通过注册表检查当前机器上是否有Windows CE App Manager可用。
  SetupApp继承了Installer类,并且将RunInstallerAttribute属性设置为true(<System.ComponentModel.RunInstaller(True)>)。因此,Visual Studio的自定制安装程序或InstallUtil.exe将在程序安装时被触发。在安装时,SetupApp类首先检查是否当前系统里有Windows CE App Manager。如果有的话,程序将会通过Windows CE App Manager安装。(注:如果需要详细了解如何在.NET中创建自定制的安装程序,请查阅Building Custom Installer Classes in .NET)。
  当添加了这个类之后,就可以创建自定制的安装程序工程了。右键点击Solution Explorer中的CustomInstaller,并且选择Build。
 
  
创建.ini文件
  下一步就是创建一个ini文件来描述你要部署的程序。这个信息将会被Windows CE App Manager使用。
  用记事本程序编辑一个setup.ini文件,将它保存在C:/CustomInstaller/目录下。



[ceAppManager]
Version = 1.0
Component = SampleApp
[SampleApp]
Description = Sample Application
Uninstall = SampleApp
CabFiles = SampleApp.cab
(注:MSDN有一篇很好的参考文献,详细解释了ini文件不同的域的内容)


  
创建Setup包
  在ini文件创建之后,最后一步就是创建一个setup工程来打包所有你早先创建的文件。在当前的solution中添加一个新的工程, File->Add Project…。
  点击Setup and Deployment工程类型,选择Setup Project。给工程命名为Setup,点击确定。在Solution Explorer里右键点击Setup,选择Add->File…给工程添加如下文件(如图7):
  · C:/CustomInstaller/bin/Debug/CustomInstaller.dll
  · C:/SmartDeviceCab1/Debug/SampleApp.CAB
  · C:/CustomInstaller/setup.ini




图7



  右键点击Solution Explorer中的Setup并选择View->Custom Actions。这样会显示所支持的各种自定义动作的类型。自定义工作编辑器允许你指定在安装过程结束后在目标计算机上所要执行的动作。在下一步中你要使用自定义动作的Install类型,它将创建安装程序。在Custom Actions面板里,右键点击Install选择Add Custom Action…,如图8。




图8



  这个动作将会触发一个对话框窗口弹出,在"Look in"下拉框中,选择Application Folder,图9所示。你可以看到list中的CustomInstaller.dll。选择它并点击确定。这将会将自定义的安装程序和setup程序联系起来。




图9



  这时你所作的仅是右键点击Solution Explorer中的Setup并且在弹出菜单中选择Build即可。
 
  
测试安装
  就是它了!你现在可以测试你做好的安装程序了,进入C:/Setup/Debug,双击Setup,如图10。在此以前,请确认你的Pocket PC已经通过ActiveSync连接到你的电脑上了。




图10



  你将会被询问安装路径;使用缺省的或者你喜欢的目录点击下一步。按照屏幕上显示的指令去做,如果所有的东西都被配置正确的话,你将会看到从Windows CE App Manager返回的消息,如图11。这个消息提示你检查一下你的移动程序所要做的主要步骤。这些步骤当然也可以被用来部署Smartphone应用程序,尽管Smartphone也可以通过其他更通用的方式来部署--如通过web服务器和SMS等。


相关文章推荐

VS2005为Windows移动程序创建安装文件

Visual Studio2005支持诸如Pocket PC和Smartphone等Windows移动应用程序的开发。但是,当一个程序开发完了之后,如何将它部署到用户的设备上呢?在Visual Stu...

vs2005打包生成安装文件 图解

一、打开已开发好的项目,例子中是 图一   二、在解决方案test中右键,新建—添加----新建项目 ,在项目类型中选择安装和部署,在模板中选择安装项目,输入名字289-setup 确定即可 ...

如何用vs2005生成.exe可执行安装文件和.exe文件的再打包问题

VS2005中build和rebuild打包生成的.msi和.exe的区别: .msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序.说白了ms...
  • S_52588
  • S_52588
  • 2012年10月08日 14:40
  • 3192

vs2005的运行时库安装文件

  • 2015年07月30日 16:34
  • 2.53MB
  • 下载

C# vs2008 创建Windows服务程序,打包成安装文件

c# 开发windows服务程序。 一个简单的服务程序示例。 归纳了几点。有不足之处,请赐教。 一、创建服务程序 1. 菜单栏“文件”--->“新建”--->“项目”,在项目类型中选择“w...

vs2005 生成文件与win7兼容 \ 利用manifest提升程序为WIN7管理员权限

最近弄vs2005 可执行文件在win7上运行,发现兼容问题 经过网上搜寻得到一下答案,谢谢网上分享的朋友 建立文本文件, 命名为”可执行文件名.exe.manifest”,并加入以下代码...

vs2005 无法启动程序 系统找不到指定的文件---解决方案

VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打...

VS2005控制台程序修改nb0文件

VS2005控制台程序修改nb0文件   我们要实现的功能就是通过CMD传递进来的值来在nb0文件末尾增加版本信息,新建控制台程序,自动生成的main函数如下,默认的代码非常简单: int _t...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2005为Windows移动程序创建安装文件(转载)
举报原因:
原因补充:

(最多只允许输入30个字)