总体介绍
解决方案里面需要有三个项目: Winform程序, Setup Project , 自定义配置项目(安装程序类)
1, Winform程序 就是你要打包的程序
2, Setup Project 就是制作安装包的
3, 安装配置项目: 只有一个"安装程序类", 例如: 用来控制安装后自动打开程序 ( 没有需求可以不要 )
一, 最简教程
1, 安装扩展
选择 扩展–>管理扩展–>联机 (或者选择 工具–>扩展和更新–>联机),搜索Microsoft Visual Studio Installer Projects,进行安装,安装好之后,重启vs(一定要重启)
2, 新建项目
选择 Setup Project 模板新建打包项目, 例如Setup1
3, 添加需要打包的项目
右键Setup1项目–> Add --> 项目输出 (一般会自动选中目标项目) --> 确定
4, 测试
"生成"没有报错后, 右键Setup1项目–>安装, 测试没问题就可以了
二, 安装配置
以 “安装后自动运行” 举例:
新建命令行项目(例如: SetupConfig), 右键项目–>添加–>新建项–>安装程序类(installer1.cs), 修改代码如下:
// 安装后启动exe文件
[RunInstaller(true)]
public partial class Installer1 : System.Configuration.Install.Installe
{
public Installer1()
{
InitializeComponent();
}
protected override void OnBeforeInstall(IDictionary savedState)
{
Console.WriteLine("安装开始, 这里的代码用于测试和验证");
string dir = "C://公司";
if (!System.IO.Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
}
protected override void OnAfterInstall(IDictionary savedState)
{
Assembly asm = Assembly.GetExecutingAssembly();
string exePath = asm.Location.Remove(asm.Location.LastIndexOf("\\"));
// 启动exe文件
Process.Start(exePath + "\\xxx.exe");
}
}
这样就可以了, 生成SetupConfig.exe, 在Setup->Add->文件, 把SetupConfig.exe加进来
在右键项目->View–>自定义操作–>install–>右键"添加自定义操作", 选中刚刚加入的SetupConfig.exe, 即可
安装的时候会自动执行Installer1.cs里面的代码
三, 其他常见配置
直接修改Setup1.vdproj 文件
有一些配置在VS里面不好设置, 直接修改 Setup Project的项目主文件: xxxxx.vdproj
以我的项目举例: 用记事本打开 Setup1.vdproj 文件 , 搜索需要配置的项目进行修改
// 修改产品名: 就是在安装对话框里面显示的产品的名字
"ProductName" = "8:xxxxx"
// 修改公司名称:
"Manufacturer" = "8:xxxxxxx"
// 修改程序的默认安装路径, 例如安装到C盘根目录
"DefaultLocation" = "8:C:\\[Manufacturer]\\[ProductName]"
// 修改默认为所有用户安装 :
"InstallAllUsers" = "11:TRUE"
// 安装包需要以管理员权限运行 : 例如要修改注册表的时候
"RequiresElevation" = "11:TRUE"
// 更新版本: 修改ProductCode的值(只要改一位就可以)
"ProductCode" = "8:{66A4057A-2F06-41EF-ACF0-38759D698C29}"
"ProductVersion" = "8:1.1.1" // 改版本号没什么用
//删除之前的版本: 好像没有效果
"RemovePreviousVersions" = "11:TRUE"
//不检查新版本
"DetectNewerInstalledVersion" = "11:FALSE"
添加桌面快捷方式
右键"主输出",创建一个快捷方式, 再把快捷方式拖动到 “User’s Desktop” 里面, 改个名字
注册DLL
有些dll需要注册
手动的命令类似这样: regsvr32 D:\grdes6.dll
这里可以设置安装时自动注册:
先把dll添加进来(Add->文件), 右键添加进来的dll设置“Register”属性为“vsdrfCOMSelfReg”。
更新版本
重新制作的安装包, 手动双击运行会提示: 已经安装了该产品的另一个版本。无法继续安装此版本。
修改ProductCode的值(只要改一位就可以): 相当于一个新的产品 ( 不会卸载原来的版本, 只会覆盖, 所以必须关闭程序再安装)
网上说: 将安装包项目的version属性值改一下. 但是我没找到Version属性