制作Windows Mobile程序的安装程序

转载:http://blog.csdn.net/faunjoe/archive/2009/10/14/4667649.aspx

 

1、  创建智能项目HelloWord。

2、  使用Dotfuscator Community Edition为Helle Word程序生成的可执行文件进行加密处理。(对可执行文件进行混淆处理,否则源代码能很容易的被反编译出来)

3、  创建智能项目安装程序HelloWordCAB。使用加密过的HelloWord的exe与dll生成智能设备安装程序HelloWordCAB.CAB。

4、  使用使用软件WinCE CAB Manager把HelloWordCAB.CAB中的对应文件与文件夹修改为中文名称,修改注册表相关信息。然后生成新的HelloWordCAB_CN.CAB、新的HelloWordCAB_CN.inf文件。

5、  创建桌面安装程序项目WindowsSetup。

6、  为HelloWordCAB_CN.CAB书写安装配置文件HelloWordCAB_CN.ini。使用WindowsSetup来把程序部署到移动设备上。

 

下面来具体介绍各个流程。

1、  创建智能项目HelloWord。

创建一个最简单的移动项目,窗体上有一个按钮。点击按钮显示"Hello Word!" 。编译并生成该项目。
 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace HelloWord

{

    public partial class MainFrm : Form

    {

        public MainFrm()

        {

            InitializeComponent();

        }

 

        private void btnHello_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Hello Word!");

        }

    }

}

 

2、  使用Dotfuscator Community Edition为Helle Word程序生成的可执行文件进行加密处理。(对可执行文件进行混淆处理,否则源代码能很容易的被反编译出来)

a)         VS2008->工具->Dotfuscator Community Edition->创建新项目

b)        Dotfuscator->输入        将刚刚生成的HelloWord.exe添加进来


c)        Dotfuscator->重命名           中选择需要混淆的内容

 

 


d)        Dotfuscator->生成        中选择目标目录后点击“生成”生成记过加密的HelloWord.exe


 


3、  创建智能项目安装程序HelloWordCAB。使用加密过的HelloWord的exe与dll生成智能设备安装程序HelloWordCAB.CAB。

a)         创建一个新“智能设备CAB项目” HelloWordCAB。

 

 


b)        把刚刚加密过的HelloWord.exe文件添加到需要部署的目录中。

 


c)        编译项目HelloWordCAB 并生成英文的移动设备CAB安装包HelloWordCAB.CAB

4、  使用使用软件WinCE CAB Manager把HelloWordCAB.CAB中的对应文件与文件夹修改为中文名称,修改注册表相关信息。然后生成新的HelloWordCAB_CN.CAB、新的HelloWordCAB_CN.inf文件。

a)         用WinCE CAB Manager打开生成的CAB安装包HelloWordCAB.CAB。

b)        把文件夹名称、文件名称、快捷方式修改为对应的中文名称。

c)        生成中文版本的CAB安装包HelloWordCAB_CN.CAB。

d)        这时候的中文CAB安装包可以发布给客户拷贝到设备上部署了。当然你也可以继续下去做一个桌面的安装程序。

5、  创建桌面安装程序项目WindowsSetup。

创建桌面安装程序项目WindowsSetup。

 

 


6、  为HelloWordCAB_CN.CAB书写安装配置文件HelloWordCAB_CN.ini。使用WindowsSetup来把程序部署到移动设备上。

a)         为HelloWordCAB_CN.CAB编写安装配置文件HelloWordCAB_CN.ini。具体内容如下

[CEAppManager]

Version = 1.0

Component = OpenNETCF WiFiDiscovery

 

[OpenNETCF WiFiDiscovery]

Description = Sample WiFi Network Discovery Application using the SDF

CabFiles = HelloWordCAB_CN.CAB

b)        用WindowsSetup把HelloWordCAB_CN.CAB安装到移动设备上。主要运用了ActiveSync中的CeAppMgr

/// <summary>

            /// 部署与删除移动设备上的程序,检测或安装PC机上是否安装软件ActiveSync

            /// 部署程序到移动设备上时候,需要在同一目录下提供.cab、.inf、.ini文件

            /// </summary>

            public class ActiveSync

            {

                #region private

                /// <summary>

                /// HKEY_LOACL_MACHINE中存放CEAPPMGR.EXE所在目录的键

                /// </summary>

                private const string CEAPPMGR_PATH = @"Software/Microsoft/Windows/CurrentVersion/App Paths/CEAPPMGR.EXE";

                /// <summary>

                /// HKEY_LOACL_MACHINE中ActiveSync程序在注册表中的位置

                /// </summary>

                private const string ACTIVESYNC_INSTALL_PATH = @"SOFTWARE/Microsoft/Windows CE Services";

                /// <summary>

                /// HKEY_LOACL_MACHINE中存放WCESCOM.EXE目录的键

                /// </summary>

                private const string WCESCOMM_PATH = @"SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/wcescomm.exe";

                /// <summary>

                /// HKEY_LOACL_MACHINE中ActiveSync程序的安装路径

                /// </summary>

                private const string INSTALLED_DIR = "InstalledDir";

                #endregion

                #region  property

                /// <summary>

                /// 判断电脑上是否安装了ActiveSync软件

                /// </summary>

                public static Boolean IsHaveActiveSync

                {

                    get

                    {

                        //获取ActiveSync的注册表键 

                        //如果ACTIVESYNC_INSTALL_PATH不存在,说明该电脑从未安装过ActiveSync。

                        RegistryKey keyActiveSync = Registry.LocalMachine.OpenSubKey(ACTIVESYNC_INSTALL_PATH);

                        if (keyActiveSync == null)

                            return false;

 

                        //获取程序 CEAPPMGR.EXE 的文件目录 

                        //如果ACTIVESYNC_INSTALL_PATH存在而WCESCOMM_PATH不存在,说明该电脑安装过ActiveSync,并已经卸载。

                        RegistryKey keyWcescomm = Registry.LocalMachine.OpenSubKey(WCESCOMM_PATH);

                        if (keyWcescomm == null)

                            return false;

 

                        String Wcescomm_Path = (String)keyWcescomm.GetValue(null);

                        keyWcescomm.Close();

                        return Wcescomm_Path == null ? false : true;

                    }

                }

       

                #endregion

 

                /// <summary>

                /// 根据.ini文件部署程序到移动设备

                /// </summary>

                /// <param name="arg">.ini文件的绝对路径,每个路径前后要加"。多个程序中用空格分开。</param>

                public static void RunAppManager(String arg)

                {

                    //获取CeAppMgr.exe的注册表键

                    RegistryKey key = Registry.LocalMachine.OpenSubKey(CEAPPMGR_PATH);

                    if (key == null)

                        throw new ActiveSyncException(ActiveSyncException.UnFindCeAppMgr);

 

                    //获取CeAppMgr.exe的安装路径

                    String CeAppMgrFullFileName = key.GetValue("") as string;

                    if (CeAppMgrFullFileName == null)

                        throw new ActiveSyncException(ActiveSyncException.UnFindCeAppMgr);

 

                    //开始执行CeAppMgr.exe程序

                    Process.Start(String.Format("/"{0}/"", CeAppMgrFullFileName), arg);

                }

 

                /// <summary>

                /// 卸载移动设备中的程序

                /// </summary>

                public static void RunAppManager()

                {

                    RunAppManager("");

                }

 

                /// <summary>

                /// 安装ActiveSync软件

                /// </summary>

                /// <param name="FileName">ActiveSync安装程序的绝对完整路径</param>

                /// <returns></returns>

                public static Boolean SetupActiveSync(String FileName)

                {

                    try

                    {

                        //运行安装文件

                        Process SetupActiveSync = Process.Start(FileName);

 

                        while (!SetupActiveSync.HasExited)

                            System.Threading.Thread.Sleep(1000);

 

                        return IsHaveActiveSync;

                    }

                    catch (Win32Exception err)

                    {

                        throw new ActiveSyncException(String.Format("系统找不到指定的程序文件。/r{0}", err.Message));

                    }

                }

            }

        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值