Visual Studio打包Excel插件详情教程

一、安装 InstallerProjects打包工具

打开VS,选择 扩展-->管理扩展-->联机 (或者选择 工具-->扩展和更新-->联机),搜索Microsoft Visual Studio Installer Projects,进行安装,安装好之后,重启vs(一定要重启) 也可以点击资源连接到浏览器下载关闭VS后安装。

二、新建 Setup 打包项目

1 、打包之前,请先生成一个稳定的可执行项目,这个可执行项目就是要打包的对象

如果有图标,可以先设置图标后再生成

2、添加执行打包的steup项目

选择 解决方案-->添加-->新建项目

搜索 setup --> 选择 Setup Project --> 点击 下一步

温馨提示:这个setup的项目名称会成为你最终打包好以后安装程序的默认安装目录名称(所以不要随便取名)

新建完成后,会出现以下界面

如果没有自动打开这个界面,那么请按照以下操作打开这个界面:

选择 你的Setup项目 --> View --> 文件系统

Setup 属性说明:

  • Author : 一般填公司名,会使用其作为软件安装目录名
  • ProductName : 应用程序名称,会使用其作为软件安装目录名
  • Localization : 指定软件运行地语种
  • TargetPlatform : 指定软件目标平台 x86 or x64
  • Version :发布版本号
  • InstallAllUsers : True 效果:“控制面板”程序中会显示公司的名称,安装时默认为“任何人”
  • ProductCode : 默认给出无需修改,当 Version 变动时会提示更改

 

三、配置 Setup 项目 主输出对象

右键 Application Folder --> Add --> 项目输出

右键菜单说明:

  • Application Folder : 应用程序包含的文件设置
  • User's Desktop : 用户桌面快捷方式设置
  • User's Programs Menu : 用户启动菜单的快捷方式设置

Add 类型说明:

  • Folder : 添加目录
  • 项目输出: 将选中项目生成 dll 或者 exe 等
  • 文件: 按照原格式输出,添加额外的依赖文件( html 、不被主程序所引用的 dll 、 exe 等),需要注意的是,这里只添加 当前路径下的文件,不包含文件夹以及文件夹中的子文件
  • 程序集: 选择指定版本程序集输出

四、添加外部依赖文件夹或者配置文件夹

如果没有依赖直接跳过,重点来了,这里其实很简单,直接拖进去就完事,往往很多太过简单的事情,就是最容易被忽略的,也是小白最容易踩的坑。

五、添加项目文件

右键 Application Folder --> Add --> 文件

六、添加桌面快捷方式

在 Application Folder 文件夹中选中 主输出 右键生成快捷方式,将快捷方式移至 User‘s Desktop 文件夹中(如果不需要桌面快捷方式也可以不添加)

千万不要忘记设置快捷方式名称和图标 

七、添加Office注册表信息

1、打开 Setup 项目中的注册表编辑器

  • 在解决方案资源管理器中,右键点击 Setup 项目,选择“视图” > “注册表”。

2、添加注册表项和值

  • 展开 HKEY_CURRENT_USER > Software > Microsoft > Office > Excel > Addins,如果没有这个目录层级则手动新建立。
  • 右键点击 Addins 文件夹,选择“新建” > “项”,命名为 ExcelAddIn1。
  • 右键点击 ExcelAddIn1 项,选择“新建” > “字符串值”。
    • 名称:FriendlyName
    • 数据:My Excel Add-In
  • 右键点击 ExcelAddIn1 项,选择“新建” > “字符串值”。
    • 名称:Description
    • 数据:This is my custom Excel add-in.
  • 右键点击 ExcelAddIn1 项,选择“新建” > “字符串值”。
    • 名称:Manifest
    • 数据:file:///[TARGETDIR]ExcelAddIn1.vsto|vstolocal

                Manifest的TARGETDIR值根据用户安装的位置动态读取

  • 右键点击 ExcelAddIn1 项,选择“新建” > “DWORD值”。
    • 名称:LoadBehavior
    • 数据:3

确保根据用户安装路径自行读取:右键Setup点击view的文件系统点击Application Folder 将DefaultLocation 的值设置为:[ProgramFilesFolder][Manufacturer]\[ProductName]

八、添加卸载程序

  • 卸载功能实现需要添加: C:\Windows\System32\msiexec.exe
  • 在 Application Folder 文件夹中添加 msiexec.exe ,创建快捷方式,并设置属性 Arguments=/x {1028BF2E-832F-4B79-8D54-01CFB4BB30EC} (备注:{1028BF2E-832F-4B79-8D54-01CFB4BB30EC} 为 Setup 项目属性中的 ProductCode ,当项目属性中 ProductCode 改变时,卸载这里的 Arguments 需要跟着改变)

这里需要注意的是 Arguments 的值前面需要加 “/x ”,注意一定要加,否则卸载程序用不了

应为添加了注册表内容卸载的时候需要将注册表内容一起卸载:所以需要自定义卸载类

1、点击项目添加类

2、添加以下内容代码:

using System;
using Microsoft.Win32;

namespace ExcelAddIn1
{
internal static class CustomAction
{
public static void RemoveRegistryKey()
{
try
{
// 指定注册表路径
RegistryKey excelAddIns = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Office\Excel\Addins", true);
if (excelAddIns != null)
{
//ExcelAddIn1为注册表名称请自行修改
excelAddIns.DeleteSubKeyTree("ExcelAddIn1", false); // 删除指定的注册表项
excelAddIns.Close();
}
}
catch (Exception ex)
{
// 处理异常,例如输出错误信息
Console.WriteLine("Error removing registry key: " + ex.Message);
}
}
}
}

3、然后在点击项目生成重新加载一下项目内容

4、将自定义操作添加到安装项目

  • 在 Visual Studio 中打开您的安装项目。
  • 右键点击项目,在菜单中选择“添加” > “项目输出...”。
  • 在解决方案资源管理器中,右键点击安装项目并选择“视图” > “自定义操作”。
  • 右键点击“卸载”并选择“添加自定义操作”。
  • 在弹出的对话框中,选择之前添加的“主输出”项目

补充一点:

使用卸载功能的时候,如果打包时所有打包进去的文件缺少了任何一个,卸载时都会报错,所以,打包时请务必确保所有打包文件在使用过程中,不会被删掉,虽然这么说很傻,但有时真有这种安装时需要用到,而使用时会被某些功能删掉的情况,总之我就有。

九、生成可安装exe程序 

选择 Setup 项目 --> 右键 生成

setup.exe 与 Setup.msi的区别

msi 文件是 windows installer 开发出来的程序安装文件,它可以让你安装、修改、卸载你所安装的程序,也就是说VS工具打包生成的msi文件就是windows installer的数据包,把所有和安装文件相关的内容封装在一个包里。VS工具打包生成的exe文件是主要是用于检查安装的环境(即系统必备),当安装的环境检查成功后,会自动再安装msi文件。

补充一点:

有时候版本升级后,打包会报错,可能是因为你这次打包中所需要的文件已经有变化,比如删掉了部分文件,或者新增文件,或者把文件移动到了其他位置,这个时候打包就会报错,因为你删除,新增或者移动,那么你都需要在 Application Folder 中做相应的修改,这个坑,如果我不说,新手必然会踩,总之我是踩过了的。

十、无需卸载旧包直接覆盖升级

安装以上步骤生成的安装包,若程序更改后再次生成的安装包,安装时会提示已经安装了该产品的另外一个版本,此时则需要使用控制面板或卸载程序卸载掉旧包,然后才能安装新包。

若程序更改想要直接覆盖升级,则需要修改 Setup 项目属性,将 Version 改为大于原版本号,修改后系统会自动提示是否修改 ProductCode,此时点“是”,此时生成的安装包运行则不会再提醒了。

到这一步还未完,虽然此时未卸载旧包可以直接安装了,但是安装后的 dll 和 exe 仍然是旧版本的 dll、exe,要解决这个问题则修改所有程序集的版本号(项目右键属性-->应用程序-->程序集信息)(如下图),修改程序集版本和文件版本,大于原版本号即可。然后重新生成的安装包就可以不用卸载直接覆盖升级啦。

借鉴引用:https://zhuanlan.zhihu.com/p/622419157

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值