用VS制作.NET程序的安装包

时间:2022-11-24 14:25:36

http://www.cnblogs.com/shiaupo/archive/2011/01/18/1938519.html

 

从VS2005开始已经集成了windows installer(vs2005以前的版本没有用过),可用vs的这个工具可以轻松将你的程序进行打包发行;

1.首先创建你的应用程序并发布release版本,以MyTest.exe为例;

2.创建一个安装项目工程

用VS制作.NET程序的安装包

3.接下来就是要将你的应用程序添加到安装包中,应用程序文件夹右键-添加-文件 选择你的应用程序MyTest.exe

用VS制作.NET程序的安装包 

如果你的应用程序是一个windows服务的话则还需要在自定义编辑操作中添加安装操作,安装-添加自定义操作-应用程序文件夹-选择你的服务;  

4. 就这样一个简单的安装包就完成了,是不是很简单。但是在现实应用中还有许多我们需要设置的地方:比如说在桌面创建一个快捷方式、在开始菜单中创建快捷方式,或许还需要设置应用程序安装的文件夹以及应用程序属性等,这些都不在这做一一说明。

5.有些童鞋可能需要问,我这安装程序怎么没有卸载功能,接下来我们就给示例:

创建一个window应用程序取名为uninstall,然后在Form1的Load事件中添加如此代码:

 

private   void  From_Load( object  sender, EventArgs e)
{
    
this .Hide();
    
if  (MessageBox.Show( " 是否删除MyTest " " 卸载提示 " , MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)  ==  DialogResult.OK)
    {
        System.Diagnostics.Process.Start(
" msiexec " " /x {741A0689-EB4A-43A0-ADF9-F545476B3AFF} /qr " );
    }
    Application.Exit();
}

 

 在这里我们借助了window下的msiexec组件来完成卸载,后面的一串参数是你的安装程序中的ProductCode(去你的安装项目属性中找吧);

 使用控制台项目也可以完成对应的功能,但是有个黑窗口在那闪很不友好 

6. 如果需要在安装完成应用程序的启动则继续:

新建一个类库,添加一个安装程序类instanller,然后重写OnAfterInstall,直接给代码:

///   <summary>
///  重写安装完成后函数
///  实现安装完成后自动启动已安装的程序
///   </summary>
///   <param name="savedState"></param>
protected   override   void  OnAfterInstall(IDictionary savedState)
{
    
base .OnAfterInstall(savedState);

    
// 启动服务
     try
    {
        ServiceController sc = new ServiceController();
        
sc
.ServiceName = "服务名称";
        sc.Start();
    }
    
catch  (System.InvalidOperationException)
    { }

    
// 启动应用程序
    Assembly asm  =  Assembly.GetExecutingAssembly();
    
string  path  =  asm.Location.Remove(asm.Location.LastIndexOf( " // " ))  +   " // " ;
    System.Diagnostics.Process.Start(path 
+   " //MyTest.exe " );
}

 

 然后在安装项目工程点击右键选择添加项目输出-主输出,选择你刚才创建的installer组件库,自定义操作编辑器-安装(右键)-添加自定义操作-选择你的installer输出。编译生成,大功告成。