演练:打包智能设备解决方案以便进行部署

Visual Studio 2008
本演练演示如何使用 Visual Studio 将应用程序及其资源打包到一个 CAB 文件中,以便可将其部署到最终用户的智能设备上。
说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual
Studio 设置

在本演练中,您可以从使用 Visual Basic、Visual C# 或 Visual C++ 编写的任何智能设备解决方案入手。有关更多信息,请参见演练:创建用于设备的 Windows
窗体应用程序

本演练演示如何执行下列操作:

  • 将一个 CAB 项目添加到解决方案中。

  • 更改产品名称。

  • 更改输出路径。

  • 使用应用程序的主输出填充 CAB 文件。

  • 如果需要,添加依赖项。

  • 创建应用程序的快捷方式。

  • 将此快捷方式移动到“开始”菜单或 Programs 文件夹中。

  • 修改注册表项。

一个现有的智能设备解决方案。对于本演练,请考虑创建并生成一个简单的项目,例如,演练:创建用于设备的 Windows 窗体应用程序中描述的项目。

为解决方案添加智能设备 CAB 项目

  1. 打开现有的智能设备项目,并确保“解决方案资源管理器”可见。

  2. 在“文件”菜单上指向“添加”,然后单击“新建项目”。

    出现“添加新项目”对话框。

  3. 在“项目类型”窗格中,展开“其他项目类型”,再单击“安装和部署”。

  4. 在“模板”窗格中单击“智能设备 CAB 项目”。

    这是唯一可用于智能设备的 CAB 项目类型。其他项目类型仅用于桌面解决方案。

  5. 在“名称”框中,键入 CABProject,然后单击“确定”。

    该 CAB 项目随即添加到解决方案中,并显示在“解决方案资源管理器”中。现在显示“文件系统编辑器”的两个窗格。

更改产品名称和其他项目属性

  1. 在“解决方案资源管理器”中单击“CABProject”(如果尚未选定)。

  2. 在“视图”菜单上单击“属性窗口”,或打开“属性”窗口。

  3. 在属性网格的“ProductName”字段中,将值更改为“MyProduct”。

    “ProductName”属性的值决定了在文件夹名称和“添加或删除程序”对话框中为应用程序显示的名称。

    • 还可以使用此窗口更改制造商的名称,以及指定操作系统的最低和最高版本。

    • 可以将“OSVersionMin”属性设置为 4.21,以指示您的 Pocket PC 应用程序具有屏幕方向感知功能。但是,将此属性设置为 4.21 会阻止应用程序安装到基于 Windows Mobile 2003 或更早版本的 Pocket PC 上。若要允许在此类设备上进行安装,并通知较新的设备该程序具有屏幕方向感知功能,则必须手动修改 .inf 文件,将“BuildMax”属性设置为下列值之一:

      0xA0000000,指示应用程序支持方形屏幕(240x240 像素)

      0xC0000000,指示应用程序支持屏幕旋转

      - 或 -

      0xE0000000,指示应用程序支持方形屏幕和屏幕旋转。

      有关更多信息,请参见位于 MSDN 上的文章 Developing Screen Orientation-Aware Applications(开发识别屏幕方向的应用程序)。

    • 对于基于 Windows Mobile 2003 SE 及更低版本的 Pocket PC 解决方案,“Compress”属性和“NoUninstall Device Deployment”属性必须为 false。请注意,对于配备了 Compact Framework 2.0 的设备,此选项可以设置为 true。有关更多信息,请参见 “智能设备
      Cab 项目”->“属性”窗口

    • 如果您使用的是 Windows CE 安装程序 DLL,使用此属性网格可以指定文件名和位置。有关 Windows CE 安装程序 DLL 的更多信息,请参见 Pocket PC 或 Smartphone SDK 文档。

更改 CAB 文件的名称并添加身份验证

  1. 在“解决方案资源管理器”中右击“CABProject”,然后单击“属性”。

    出现 CAB 项目的“属性页”对话框。在“输出文件名”框中,将 CAB 文件的名称和路径更改为 Debug\MyApp.cab,然后单击“确定”。

  2. 还可以使用此属性页为项目添加身份验证。身份验证对于 Smartphone 解决方案是必需的,但是在基于 Windows Mobile 2003 SE 及更低版本的 Pocket PC 解决方案上,身份验证不受支持。有关更多信息,请参见设备项目中的安全性

为 CAB 项目添加设备项目应用程序

  1. 在“文件系统编辑器”的左窗格中,单击“应用程序文件夹”,以指定在后续步骤中选择的文件将安装到目标设备上的此文件夹中。

    如果看不到“文件系统编辑器”,请在“解决方案资源管理器”中右击 CAB 项目名称,单击“视图”,再单击“文件系统”。

  2. 在 Visual Studio 中的“操作”菜单上指向“添加”,然后单击“项目输出”。

  3. 在“添加项目输出组”对话框中,从“项目”下拉列表中选择您的智能设备项目。

  4. 从输出列表中选择“主输出”,然后单击“确定”。

 说明:

在为使用 C++ 编写的应用程序创建智能设备 CAB 项目时,如果要动态链接到 atl90.dll、mfc90U.dll 和/或 msvcr.dll 之类的依赖项,则必须手动将这些 DLL 添加到 CAB 项目。但是,为了减少 MFC/ATL DLL 的依赖项,强烈建议使用静态链接。如果采用的是静态链接,则无需随同应用程序一起重新发布 DLL。如果采用动态链接,并且必须在 CAB 中重新分发 DLL,请不要将这些 DLL 安装到设备上的系统目录(如 \windows)中,而是应将这些
DLL 安装到本地应用程序目录中。如果重新分发应用程序套件,且其中的所有应用程序都动态链接到 ATL/MFC 运行时,则应将所有应用程序和运行时 DLL 都安装到同一个应用程序目录中,并提供指向这些应用程序的快捷方式(这些快捷方式可以放置在应用程序各自的文件夹中)。这将节省一些空间,并避免因以后替换了系统目录中的 DLL 而导致破坏动态链接到这些 DLL 的应用程序的危险。

向 CAB 项目中添加依赖项(仅限 C++ 项目)

  1. 在“解决方案资源管理器”中,右击 CAB 项目名称,指向“添加”,然后单击“文件”。

  2. 定位到 Visual Studio 安装文件夹\VC\ce\dll\平台。

  3. 选择要添加的文件。

    • 对于 MFC 项目,按住 Ctrl,再单击 MFC90U.DLL、atl90.dll 和 msvcr90.dll。如果应用程序需要特定于语言的 MFC 资源,则可能还必须单击一个或多个特定于语言的 DLL。

    • 对于 ATL 项目,按住 Ctrl,再单击 atl90.dll 和 msvcr90.dll。如果 ATL 解决方案支持 MFC,则还要单击 MFC90U.DLL。

    • 对于 Win32 项目,请单击 msvcr90.dll。

  4. 在“添加文件”对话框中单击“打开”,将文件添加到 CAB 项目中。

  5. 在“文件系统编辑器”的左窗格中,右击“目标计算机上的文件系统”。

  6. 单击“添加特殊文件夹”,然后单击“Windows 文件夹”。

  7. 在“文件系统编辑器”的左窗格中,单击包含主输出的文件夹。默认情况下,DLL 已添加到与主输出相同的文件夹中。若要将这些 DLL 移动到 Windows 文件夹中,请在“文件系统编辑器”的中间窗格中选择这些文件,然后将它们拖到“Windows 文件夹”图标上。

  8. 使用相同的过程添加解决方案所需要的其他依赖项。可以将依赖项添加到任何文件夹中;不要求将它们添加到“Windows”文件夹。

为设备项目应用程序创建快捷方式

  1. 在“文件系统编辑器”的右窗格中,选择“<应用程序项目名称> 的主输出”。

  2. 在“操作”菜单上单击“创建 <应用程序项目名称> 的主输出的快捷方式”。

    此命令将在“输出”项下面添加一个“快捷方式”项。

  3. 右击该“快捷方式”项,单击“重命名”,然后将该快捷方式重命名为适合于快捷方式的名称。

将此快捷方式移动到“开始”菜单或 Programs 文件夹中

  1. 在“文件系统编辑器”的左窗格中,右击“目标计算机上的文件系统”,指向“添加特殊文件夹”,然后单击“Start Menu 文件夹”或“Programs 文件夹”。

  2. 将此快捷方式从“应用程序文件夹”拖动到“Start Menu 文件夹”或“Programs 文件夹”。

添加注册表项

  1. 在“解决方案资源管理器”中单击 CAB 项目。

  2. 在“视图”菜单上指向“编辑器”,然后单击“注册表”。

  3. 在“注册表编辑器”中,右击 HKEY_CURRENT_USER,然后单击“新建项”。

  4. 当“注册表编辑器”中显示“新建项”项时,将其重命名为“SOFTWARE”。

  5. 右击此新项,指向“新建”,然后单击“项”。

  6. 当“注册表编辑器”中显示“新建项”项时,将其重命名为“MyCompany”。

  7. 右击“MyCompany”项,然后单击“属性窗口”。

    “名称”值已更改为“MyCompany”。

生成 CAB 文件

  1. 在“生成”菜单上单击“生成 CABProject”。

    - 或 -

    在“解决方案资源管理器”中右击“CABProject”,再单击“生成”。

  2. 在“文件”菜单上单击“全部保存”。

    Smartphone 解决方案的 CAB 文件在部署到最终用户的设备上之前必须进行数字签名。基于 Windows Mobile 2003 SE 及更低版本的 Pocket PC 解决方案不支持数字签名。有关更多信息,请参见如何:对
    CAB 文件进行签名(设备)

将 CAB 文件部署到设备上

  1. 在“Windows 资源管理器”中定位到存储此解决方案的文件夹。可以在解决方案的“CABProject\Release”文件夹中找到此 CAB 文件。

  2. 将 CAB 文件复制到使用 ActiveSync 4.0 或更高版本进行连接的设备上。

    当用户在设备上的“资源管理器”中点击此 CAB 文件名时,Windows CE 将解开该 CAB,并将应用程序安装到设备上。

    有关更多信息,请参见 Smartphone 和 Pocket PC SDK 文档。

引用于:http://msdn.microsoft.com/zh-cn/library/zcebx8f8(v=vs.90).aspx

PDA智能设备解决方案打包及部署的更多相关文章

  1. .net平台 通过Windows installer 打包和部署实例操作

    Windows installer 打包和部署 1.新建项目. 打开VS,新建项目->其他项目类型->安装和部署(Visual Studio Installer). 注:若VS2013 或 ...

  2. 使用.NET 6开发TodoList应用(30)——实现Docker打包和部署

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 .NET 6 Web API应用使用最多的场景是作为后端微服务应用,在实际的项目中,我们一般都是通过将应用程序打包成docke ...

  3. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  4. 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)

    副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方 ...

  5. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 打包并公布App

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 打包并公布App         如今既然你理解了一个app的四个主要部分, ...

  6. Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)

    下载hudson ,安装部署http://hudson-ci.org/ 将下载的hudson-3.3.3.war放到tomcat的webapps目录下并启动tomcat,输入地址访问 点击Instal ...

  7. Spring Boot应用 打包与部署指南

    Spring Boot的打包与部署有何特点? Java Web应用在Spring Boot之前,通常是打包成war(Web application ARchive)包,结合Tomcat来完成部署. 对 ...

  8. springboot测试、打包、部署

    本文使用<springboot集成mybatis(一)>项目,依次介绍springboot测试.打包.部署. 大多数朋友是做后端的,也就是为其他系统或者前端UI提供Rest API服务. ...

  9. jenkins+Gitlab+maven+tomcat实现自动集成、打包、部署

    一.前言 首先出于提高自己技术水平和琢磨能做点什么能提高工作效率,上线工作实在无聊.重复(手动编译.打包,传包,重启),于是就想到了jenkins,jenkins持续集成已经不是什么新鲜的话题,网上文 ...

随机推荐

  1. 分布式改造剧集2---DIY分布式锁

    前言: ​ 好了,终于又开始播放分布式改造剧集了.前面一集中(http://www.cnblogs.com/Kidezyq/p/8748961.html)我们DIY了一个Hessian转发实现,最后我 ...

  2. python模块collections中namedtuple()的理解

    Python中存储系列数据,比较常见的数据类型有list,除此之外,还有tuple数据类型.相比与list,tuple中的元素不可修改,在映射中可以当键使用.tuple元组的item只能通过index ...

  3. 剑指Offer——“你最大的缺点是什么”回答技巧及范例

    剑指Offer--"你最大的缺点是什么"回答技巧及范例   问题分析:认识自己的缺点是一个巨大的优点, 当HR问到你缺点的时候, 你的机会来了, 请快展示你的自知之明吧!你想把优点 ...

  4. SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)

    SQLite 运算符 SQLite 运算符是什么? 运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算. 运算符用于指定 SQLite 语句中的条件 ...

  5. 利用CocoaHTTPServer实现wifi局域网传输文件到iphone

    背景 近日在做一个代码阅读器,其中涉及到代码文件的上传,之前看到过许多app支持局域网传文件,因此就通过查询和研究实现了此功能,我是用的框架是CocoaHTTPServer. 原理 CocoaHTTP ...

  6. Android上下文菜单ContentView详解

    ContentView介绍 上下文菜单继承了android.view.Menu,因此我们可以像操作Options Menu那样给上下文菜单增加菜单项.上下文菜单与Options Menu最大的不同在于 ...

  7. linux中查看现在使用的shell是ksh还是bash?以及怎样修改?

    查看系统支持的shell: cat  /etc/shells 查看现在使用的shell:  修改默认shell: 另外,修改了系统默认shell之后不会立即生效,之后再次登录系统修改的shell才会生 ...

  8. Shell命令:echo 命令详解

    http://blog.chinaunix.net/uid-27124799-id-3383327.html # echo命令介绍 功能说明:显示文字. 语 法:echo [-ne][字符串] / e ...

  9. 文件操作:fseek函数和ftell函数

    1.fseek函数: int fseek(FILE * _File, long _Offset, int _Origin); 函数设置文件指针stream的位置.如果执行成功,stream将指向以fr ...

  10. Spring中Bean多种实现切换方案

    一个公共工程中的Spring配置文件,可能会被多个工程引用.因为每个工程可能只需要公共工程中的一部分Bean,所以这些工程的Spring容器启动时,需要区分开哪些Bean要创建出来.另一种场景是:想通 ...