VS2010程序打包与自定义操作(详细步骤版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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”代码中重写如下方法:

///

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

///

public static void Main()

{

}

public Installer1()

{

InitializeComponent();

}

///

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

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

///

///

protected override void OnAfterInstall(IDictionary savedState) {

base.OnAfterInstall(savedState);

}

///

/// 重写安装过程方法

///

///

///

public override void Install(IDictionary stateSaver)

{

base.Install(stateSaver);

}

protected override void OnBeforeInstall(IDictionary savedState)

{

base.OnBeforeInstall(savedState);

}

///

/// 重写卸载方法

///

///

public override void Uninstall(IDictionary savedState)

{

base.Uninstall(savedState);

}

///

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

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

///

///

protected override void OnAfterUninstall(IDictionary savedState)

{

base.OnAfterUninstall(savedState);

}

///

/// 重写回滚方法

///

///

public override void Rollback(IDictionary savedState)

{

base.Rollback(savedState);

}

这里对protected override void OnAfterInstall(IDictionary savedState){}和protected override void OnAfterUninstall(IDictionary savedState){}进行如下自定义操作(当然也可以对其它方法进行自定义以实现其它功能)。

protected override void OnAfterInstall(IDictionary savedState)

{

base.OnAfterInstall(savedState);

Assembly asm = Assembly.GetExecutingAssembly();

string path = asm.Location.Remove(stIndexOf("")) + "";

try

相关文档
最新文档