1) 创建windows 窗体应用程序 test(建议使用.NET Framework 2.0)。
2) 任意编辑应用程序,生成解决方案。
3) 右击解决方案—添加—新建项目—其他项目类型—安装和部署—安装项目 testSetup(建议使用.NET Framework 2.0)。
4) 右击testSetup—视图—文件系统。
5) 右击应用程序文件夹—添加—文件 将test项目下Debug(Release)中的文件全部选中添加。
6) 在用户的“程序”菜单中创建快捷方式
1. 右击用户的“程序”菜单—创建文件夹test (说明:文件夹test将在开始菜单的所有程序中显示)。
2. 右击应用程序文件夹下的test.exe——创建快捷方式获取的名字为“test.exe 的快捷方式”的快捷方式(当然你也可以修改这个快捷方式
的名字,这里我就不做任何修改了),将“test.exe 的快捷方式”剪切到用户的“程序”菜单下的test文件下。
7) 在用户桌面创建快捷方式。
1. 右击应用程序文件夹下的test.exe——创建快捷方式获取的名字为“test.exe 的快捷方式”的快捷方式(当然你也可以修改这个快捷方式
的名字,这里我就不做任何修改了),将“test.exe 的快捷方式”剪切到用户桌面下。
8) 添加卸载程序。
1. 右击应用程序文件夹—添加—文件(c:/WINDOWS/system32/msiexec.exe)
2. 右击msiexec.exe 创建快捷方式 "msiexec.exe 的快捷方式"(当然你也可以修改这个快捷方式的名字,这里我就不做任何修改了),
将"msiexec.exe 的快捷方式"剪切到用户的“程序”菜单下的test文件下。
3. 修改testSetup兼容版本,单击testSetup—检测到的依赖项—Microsoft .NET Framework,右击左边窗口启动条件下的.NET Framework—
属性—将Version 改为2.0.50727
4. 绑定安装程序和卸载快捷方式,单击testSetup 复制testSetup的ProductCode的属性如{18162EAE-006B-4CDC-858F-25A3C772834B},右击
setSetup—视图—文件系统,然后右击用户的“程序”菜单—msiexec.exe 的快捷方式—属性窗口的 Arguments输入 /x {18162EAE-006B-
4CDC-858F-25A3C772834B}
5. 生成testSetup.
9) 运行testSetup—Debug(Release)下的setup.exe(testSetup.msi)
10) 运行程序。
11) 卸载程序—单击开始—所有程序—"msiexec.exe 的快捷方式"
12) 结束
附言:将安装的路径添加到注册表中
1.创建类库“CSInstall”
2.添加安装程序类“CSInstaller.cs”代码如下
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using Microsoft.Win32;
namespace CSInstall
{
[RunInstaller(true)]
public partial class CSInstaller : Installer
{
public CSInstaller()
{
InitializeComponent();
}
/// <summary>
/// 安装时触发
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(IDictionary stateSaver)
{
string path = this.Context.Parameters["targetdir"].ToString();//安装文件路径
WriteRegedit(path);
}
/// <summary>
/// 移除时触发
/// </summary>
/// <param name="savedState"></param>
public override void Uninstall(IDictionary savedState)
{
RemoveRegedit();
}
/// <summary>
/// 移除注册表
/// </summary>
private void RemoveRegedit()
{
try
{
RegistryKey zhcao = Registry.LocalMachine.OpenSubKey(@"software\zhcao",true);
if (zhcao != null)
{
RegistryKey software = Registry.LocalMachine.OpenSubKey("software", true);
software.DeleteSubKey("zhcao");
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 写注册表
/// </summary>
/// <param name="path"></param>
private void WriteRegedit(string path)
{
try
{
RegistryKey zhcao = Registry.LocalMachine.OpenSubKey(@"software\zhcao", true);
if (zhcao == null)
{
RegistryKey software = Registry.LocalMachine.OpenSubKey("software", true);
zhcao = software.CreateSubKey("zhcao");
}
zhcao.SetValue("path", path);
}
catch (Exception ex)
{
throw ex;
}
}
}
}
3.右击“安装和部署”项目—视图—文件系统,右击应用程序文件夹—添加—文件—CSInstall.dll(类库“CSInstall”生成的)。
4.在安装时写入注册表。右击“安装和部署”项目—视图—自定义操作,右击安装—添加自定义操作—应用程序文件夹—CSInstall.dll,右击CSInstall.dll—属性窗口,在CustomActionData的属性中添加 /targetdir="[TARGETDIR]\" 这就是安装的时候往注册表中写入的安装路径。
5.在卸载是移除注册表。右击“安装和部署”项目—试图—自定义操作,右击卸载—添加自定义操作—应用程序文件夹—CSInstall.dll
这样就完成了。