Excel催化剂开源第21波-使用Advanced Installer打包VSTO几个注意问题

2021-08-19 15:06:21 浏览数 (1)

VSTO项目开发完毕完,最终需要分发给用户,需要Excel催化剂用的是Clickonce发布方式,但也面临到部分用户环境要求太高,设置过程太繁锁,而要求有一些简单的安装方式,用打包工具将其打包为一个EXE文件,然后分发给用户安装,这个可以带来很好的安装体验。

Excel催化剂一直也同样有提供离线版打包工具打包成EXE文件一键安装的方式,不过鉴于Excel催化剂功能还在不断迭代开发中,打包的方式,暂时还不会做自动更新功能,所以不建议使用离线版安装

在Excel催化剂进行离线包打包过程中,遇到一些小小的坑,也摸索过来了,可以给大家作一些简单分享。

直接选择整个解决方案出错时

一般来说,选择解决方案文件即可自动识别出有哪些项目,提示要打包某个项目,是基于debug还是release来打包等,但发现偶尔还是通不过,可以选择第2项,直接定位到debug或release文件夹中。

一般选择解决方案文件即可

想让程序以管理员的方法安装,所有用户都可用

这个在实际情况的确出现过,用户电脑不是管理员身份,电脑被限制了安装软件的权限,在用户电脑上没法正常安装VSTO项目,用管理员权限安装成功后,但程序仍然只能管理员帐号登录才可用,其他用户登录不可用。

观察Advanced Installer的打包向导,也感觉是VSTO的程序只能安装给当前用户使用,界面上是变灰显示的。

只能以当前用户安装

同样的,回到在非向导中界面中,可以看到有多个类型修改,但不管用,在此处更改安装到Per Machine,最终改变的只是安装文件夹的事情。修改后安装完,普通用户插件仍不可见。

在非向导中可以看到有多个类型修改,但不管用

解决办法:有可能VSTO的项目,Excel读取时,只会在注册表Current User上目录下寻找插件,管理员权限安装,不会在当前Current User上写入条目,所以需要在当前用户登录下,在注册表的Current User目录下写入插件信息,特别需要注意插件的安装位置部分要同步修改过来。

注册表信息注册插件

Manifest清单选择什么

如下图,只需选择vsto文件即可。

选择vsto文件

想在用户安装过程中,同时运行其他程序

这里说的其他程序,并非指的是VSTO运行时、.Net Framework框架这些,而是可以运行其他命令。

例如Excel催化剂因在线版自动更新的要求,将许多配置文件给分离出来,重新做了个Console程序供用户手动将这些配置文件复制到程序数据文件夹中,在离线版安装过程中,想一步到位,无需提示用户多一步运行Console程序,将此程序也一并打包进安装程序中。

可以使用自定义动作向导设置运行exe,配置好相应的exe位置信息,即可完成安装插件过程中,也同时运行其他exe文件。

使用自定义动作向导设置运行exe

将要运行的exe添加到程序文件夹中

设置好自定义动作的exe信息

打包成32位还是64位程序

因其他程序可能有区分32位和64位的区别,但感觉VSTO项目是不用太理会这些,设置32位还是64位,貌似只影响最终安装时将文件存放到哪个位置而已,是program files 还是program files(86),亲测了一下,打包时选64位,在32位OFFICE上安装还是可能成功,若有其他问题,可以反馈一起讨论。

打包选择的位数发布

结语

在VSTO项目打包过程中,使用Advanced Installer打包遇到的一些小坑小洼,在这里给大家作些简单说明,希望对后来者们可以避开一些坑,将精力聚焦在业务逻辑的实现上,这些共性没有太大代码价值的,能快速通过。

0 人点赞