VS程序打包与自定义操作详细步骤版.docx

上传人:b****6 文档编号:4353568 上传时间:2022-11-30 格式:DOCX 页数:16 大小:536.07KB
下载 相关 举报
VS程序打包与自定义操作详细步骤版.docx_第1页
第1页 / 共16页
VS程序打包与自定义操作详细步骤版.docx_第2页
第2页 / 共16页
VS程序打包与自定义操作详细步骤版.docx_第3页
第3页 / 共16页
VS程序打包与自定义操作详细步骤版.docx_第4页
第4页 / 共16页
VS程序打包与自定义操作详细步骤版.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

VS程序打包与自定义操作详细步骤版.docx

《VS程序打包与自定义操作详细步骤版.docx》由会员分享,可在线阅读,更多相关《VS程序打包与自定义操作详细步骤版.docx(16页珍藏版)》请在冰豆网上搜索。

VS程序打包与自定义操作详细步骤版.docx

VS程序打包与自定义操作详细步骤版

VS2010

打包安装部署

这里简单介绍如何在VS2010开发环境下制作安装项目,其中包括如何设置开机启动、删除注册表及安装后自动运行,加上卸载功能。

1、  创建安装项目

    打开VS2010,点击菜单上的“文件”>>“新建”>>“项目”,弹出如下对话框。

 

    如上图所示,在“其他项目类型”中选择“安装项目”,根据自己的需求命名,这里命名为“MySetup”,选择保存路径。

这样就创建了一个安装项目。

2、 在安装项目中添加其他应用程序项目

点击菜单上的“文件”>>“添加”>>“现有项目”,弹出如下对话框。

    这里选择之前已经做好的一个WPF应用程序项目

3、 将可执行文件(.exe)、类库(.dll文件)及所需图片加入安装项目中

右击“MySetup”>>“视图”>>“文件系统”,主窗口显示文件系统界面,如下图

    右击“应用程序文件夹”>>“添加”>>“项目输出”,弹出如下对话框。

    在“项目”选项中选择“DataServiceHost”,按住“Ctrl”键,选中“主输出”,单击“确定”。

再右击“应用程序文件夹”>>“添加”>>“文件夹”,命名为“Images”,在“Images”中放入应用程序需要的图片,右击“Images”>>“添加”>>“文件”,在弹出的对话框中添加所需的图片。

4、 创建快捷方式

在“应用程序文件夹”中右击“主输出来自DataServiceHost(活动)”,如下图。

   点击“创建主输出来自DataServiceHost(活动)的快捷方式”,将快捷方式重命名为“我的WPF应用程序”,这里可以根据需要命名。

在“文件系统”中的“用户的“程序”菜单”添加文件夹“我的WPF应用程序”,这里可以根据需求命名,将之前“我的WPF应用程序”快捷方式剪切到该文件夹中。

同理可以在“文件系统”中的“用户桌面”中创建快捷方式。

(在用户桌面中不要添加文件夹)

5、 实现安装程序卸载

这里直接引用了Windows系统中自带的一个卸载程序,该卸载程序在“C:

/Windows/System32”文件夹中,名称为“msiexec.exe”,右击“应用程序文件夹”>>“添加”>>“文件”,将“msiexec.exe”加入“应用程序文件夹”中

    同步骤4,创建卸载程序的快捷方式,这里建议不要在“用户桌面”中创建卸载程序,难看!

重点,“卸载快捷方式”的属性“Argument”值设为“/x{710AD120-3D4C-430D-A9FA-A1D504465CC8}”,其中“{710AD120-3D4C-430D-A9FA-A1D504465CC8}”为产品编号(ProductCode),可在“MySetup”属性框口中找到。

左击“MySetup”(不是右击),再点击属性窗口,如下图。

“ProductName”属性值就是上述的“{710AD120-3D4C-430D-A9FA-A1D504465CC8}”。

6、 改变各快捷方式的图标

这里只拿“我的WPF应用程序快捷方式”为例,其他同理。

在“应用程序文件夹”中的“Images”中添加需要的“.ico图标”,这里添加一个“mywpf.ico”图标。

如下图。

右击“我的WPF应用程序快捷方式”>>“属性窗口”,属性窗口如下图。

设置“Icon”属性,选择“Images”中的“mywpf.ico”图标。

7、 实现开机启动

右击“MySetup”>>“视图”>>“注册表”,主窗口显示如下图。

   在“HKEY_LOCAL-MACHINE”文件夹下新建键“Software”>>“Microsoft”>>“Windows”>>“CurrentVersion”>>“Run”,在“Run”文件夹新建字符串值,命名为“DataServiceHost.exe”,可根据需求命名,右击“DataServiceHost”>>“属性窗口”,其中“Value”属性设为“[TARGETDIR]DataServiceHost.exe”。

如此,便实现了开机启动。

8、 实现安装后自动运行及删除注册表

实现这两个功能就需要一些技巧,左键点击“解决方案”选中,然后点击菜单上的“文件”>>“添加”>>“新建项目”,如下图。

选择“类库”项目类型,点击确定即可在解决方案中添加一个类库项目。

右键点击该类库项目>>“添加”>>“新建项”,如下图。

选择“安装程序类”,命名为“Installer”。

在“Installer.cs”代码中重写如下方法:

///

        ///函数入口——主函数

        ///

        publicstaticvoidMain()

        {

        }

        publicInstaller1()

        {

            InitializeComponent();

        }

        ///

        ///重写安装完成后函数

        ///实现安装完成后自动启动已安装的程序

        ///

        ///

        protectedoverridevoidOnAfterInstall(IDictionarysavedState)

        {

            base.OnAfterInstall(savedState);

        }

        ///

        ///重写安装过程方法

        ///

        ///

        ///

        publicoverridevoidInstall(IDictionarystateSaver)

        {

            base.Install(stateSaver);

        }

        protectedoverridevoidOnBeforeInstall(IDictionarysavedState)

        {

            base.OnBeforeInstall(savedState);

        }

        ///

        ///重写卸载方法

        ///

        ///

        publicoverridevoidUninstall(IDictionarysavedState)

        {

            base.Uninstall(savedState);

        }

        ///

        ///重写卸载完成后函数

        ///实现安装完成后自动删除注册表

        ///

        ///

        protectedoverridevoidOnAfterUninstall(IDictionarysavedState)

        {

            base.OnAfterUninstall(savedState);

        }

        ///

        ///重写回滚方法

        ///

        ///

        publicoverridevoidRollback(IDictionarysavedState)

        {

            base.Rollback(savedState);

        }

这里对protectedoverridevoidOnAfterInstall(IDictionarysavedState){}和protectedoverridevoidOnAfterUninstall(IDictionarysavedState){}进行如下自定义操作(当然也可以对其它方法进行自定义以实现其它功能)。

protectedoverridevoidOnAfterInstall(IDictionarysavedState)

        {

            base.OnAfterInstall(savedState);

            Assemblyasm=Assembly.GetExecutingAssembly();

            stringpath=asm.Location.Remove(asm.Location.LastIndexOf(""))+"";

            try

            {

                System.Diagnostics.Process.Start(path+"\DataServiceHost.exe");

            }

            catch(Exceptionmy)

            {

                thrownewException(my.Message);

            }

        }

protectedoverridevoidOnAfterUninstall(IDictionarysavedState)

        {

            base.OnAfterUninstall(savedState);

            RegistryKeyhklm=Registry.LocalMachine;

            RegistryKeyrun=hklm.CreateSubKey(@"SoftwareMicrosoftWindowsCurrentVersionRun");

            try

            {

                run.DeleteValue("DataServiceHost.exe");

                run.Close();

                hklm.Close();

            }

            catch(Exceptionmy)

            {

                thrownewException(my.Message);

            }

        }

自定义操作完成后,一定要将该类库程序生成,这样就可以得到“.dll”文件。

生成成功后,将该类库程序集添加到安装项目中。

右击“MySetup”>>“视图”>>“文件系统”,主窗口如下图。

右键点击“应用程序文件夹”>>“添加”>>“项目输出”,如下图所示,选择该类库项目为“主输出”,点击确定。

然后,将该类库程序集添加到自定义操作中,右击“MySetup”>>“视图”>>“自定义操作”,主窗口如下图。

右击“安装”>>“添加自定义操作”,弹出如下对话框。

点击打开“应用程序文件夹”,选择ClassLibrary2,点击右侧“添加输出”。

这样便实现了安装后自动运行和卸载后删除注册表的功能。

9、自定义安装。

在安装过程中实现对配置文件(config.dat)的复制,并在安装过程中允许用户输入串口配置参数,实现对配置文件的修改。

右击“MySetup”>>“视图”>>“用户界面”,主窗口如下图。

右键单击“启动”>>“添加对话框”>>“文本框(A)”,点击确定。

左键点击上图中的“文本框(A)”,在右侧属性窗口中设置要显示的提示符与文本框名称等信息,如下图所示,本示例中只配置和显示了三个文本框(属性名分别为COMM、COML和COMR)。

实现效果如下图所示。

然后,在右击“MySetup”>>“视图”>>“自定义操作”,如下图

单击步骤8中添加的类库,在其右侧显示的属性“CustomActionData”中写入

“/comm=[COMM]/coml=[COML]/comr=[COMR]/targetdir="[TARGETDIR]\"”,如此便可以自定义类库与安装程序之前的变量传递。

其中targetdir传递的是程序安装目录。

最后,在步骤8中installer.cs中的OnAfterInstall函数中,增加具体的操作代码。

如下。

publicconststring="C:

\\config.dat";

[System.Runtime.InteropServices.DllImport("Kernel32.dll",CharSet=System.Runtime.InteropServices.CharSet.Unicode)]

publicstaticexternboolWritePrivatePro(stringsAppName,stringsKeyName,stringsValue,strings);

protectedoverridevoidOnAfterInstall(IDictionarysavedState)

{

stringcomm="10";

stringcoml="11";

stringcomr="12";

stringcurrentDir="";

if(!

String.IsNullOrEmpty(this.Context.Parameters["COMM"]))//LOCALIP

comm=this.Context.Parameters["COMM"].Trim();//LOCALIP

if(!

String.IsNullOrEmpty(this.Context.Parameters["COML"]))

coml=this.Context.Parameters["COML"].Trim();

if(!

String.IsNullOrEmpty(this.Context.Parameters["COMR"]))

comr=this.Context.Parameters["COMR"].Trim();

if(!

String.IsNullOrEmpty(this.Context.Parameters["targetdir"]))

currentDir=this.Context.Parameters["targetdir"].Trim().ToString();

//currentDir=currentDir.TrimEnd('\\');

if(System.IO.(currentDir+"config.dat"))

{

System.IO.(currentDir+"config.dat","C:

\\config.dat",true);

}

WritePrivatePro("ctlset","comm",comm,);

WritePrivatePro("barcode","comL",coml,);

WritePrivatePro("barcode","comR",comr,);

base.OnAfterInstall(savedState);

}

其中,config.dat需要被手动添加到右击“MySetup”>>“视图”>>“文件系统”>>“应用程序文件夹”中,才能实现上述指定位置的拷贝与修改。

10、 最后一步

右击“MySetup”>>“生成”,成啦!

在安装项目中Debug文件夹中找到“Setup.msi”,双击就可以安装了….

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1