VSTO(C#)Excel开发8:打包发布安装卸载

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        前一篇VSTO(C#)Excel开发7:自定义任务窗格-CSDN博客

        前面我们已经弄出一点实际可用的东西了,那么就该发布给别人用了。

        基本的发布很简单,项目右键-发布,发布到目录即可,但是安装卸载有一点混乱(微软公司没做好)。

目录

一、发布

二、发布目录结构

三、依赖项(系统必备)

​编辑

四、安装

五、卸载的混乱

六、开发时生成解决方案自动安装

七、总结:必须去应用管理那里卸载

八、Excel里管理加载项


一、发布

        选择输出位置:

        默认的就挺好。

        选择用户从哪里安装:

         “从CD-ROM或DVD-ROM”其实就是从目录安装。

        然后就可以了:

二、发布目录结构

         这里面有两个文件一个目录,不要乱删,都有用。

  • Application Files 目录 实际的安装文件,如果你多次生成,这个目录下会存在多个子目录,每个版本一个子目录,所以最好生成前清理一下
  • 项目名称.vsto文件 直接的安装入口,不包括依赖项检查
  • setup.exe文件 带有依赖项检查的安装入口,如果已经安装过依赖项,这个文件是可以不要的(用这个安装也依赖vsto文件)

        Application Files目录是这样的:

        因为我发布了两次,有两个子目录,旧的那个是多余的。

三、依赖项(系统必备)

        依赖项在项目属性里设置,默认已经包含了必须的两个:

        看得到上面有个“创建用于安装系统必备组件的安装程序”是选中的,这就是生成setup.exe的原因。

四、安装

        直接双击vsto或exe就可以安装,如果已经安装过并且是最新版本会提示“已经安装了最新版本”。

        exe会检查依赖项,没有安装会提示如何安装。

        安装之后在操作系统的应用管理那里可以卸载,就像一个普通程序一样:

五、卸载的混乱

         Excel的加载项管理也可以“删除”加载项,但是——但是,这个删除是不干净的,操作系统那边仍然认为程序已安装,再次安装时提示已经安装最新版,从而安装无效。需要在操作系统的应用管理那里去卸载。

        如果运行了安装程序又在Visual Studio里面运行则打开Excel时可能出现如下错误:

         发生此问题时不仅从VS执行没有加载项,连手工打开Excel都没有加载项,也就是注册信息混乱了。同样必须去应用管理卸载,然后重新生成解决方案。

六、开发时生成解决方案自动安装

        之前我们没有刻意安装过,从VS运行Excel有加载项我们能理解,但是为什么直接打开Excel也有加载项呢?原来是生成解决方案的时候自动安装了,所以才会有前面说的混乱(以及卸载后壁必须重新生成解决方案)。

七、总结:必须去应用管理那里卸载

        如果加载项有问题,可以在Excel里面禁用,但是不要删除。一定要去应用管理那里卸载程序。

        不管发生社么混乱,都先去应用管理里面卸载。

八、Excel里管理加载项

        操作方法:

        先选“COM加载项”,再点击“转到”:

         去掉前面的勾,点确定,就不会加载了。不管有没有勾,这个对话框下面的加载行为永远是“启动时加载”,估计这个界面也是很多年没人维护了。

        再强调一次,“删除”不是卸载,会搞坏系统,不要用。


下一篇VSTO(C#)Excel开发9:处理格式和字体-CSDN博客


(这里是文档结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何逐步迭代衍生出一个网络安全产品

逐步迭代衍生出一个网络安全产品需要结合市场需求、技术趋势和用户反馈,通过系统化的开发和优化过程来实现。以下是逐步迭代的详细步骤: 1. 确定市场需求和产品定位 市场调研:分析当前网络安全市场的痛点和趋势,如云安全、零信任、…

uni-app打包h5并部署到nginx,路由模式history

uni-app打包有些坑,当时运行的基础路径填写了./,导致在二级页面刷新之后,页面直接空白。就只能换一个路径了,nginx也要跟着改,下面是具体步骤。 manifest.json配置web 运行路径写/h5/,或者写你们网站的目…

Ceph(1):分布式存储技术简介

1 分布式存储技术简介 1.1 分布式存储系统的特性 (1)可扩展 分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为线性增长。分布式存储的水平扩展有以下几个特性: 节点…

Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)

Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!) 文章目录 Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)前…

Docker安装Kafka(内含zookeeper)

因为kafka是基于zookeeper做的,所以必须要有zookeeper 一、Zookeeper 1.拉取镜像 docker pull zookeeper:3.7.02.运行 docker run --restartalways \--log-driver json-file \--log-opt max-size100m \--log-opt max-file2 \--name zookeeper -p 2181:2181 \-v…

芯谷D8563TS实时时钟/日历芯片详解可替代PCF8563

概述 芯谷D8563TS是一款低功耗CMOS实时时钟/日历芯片,广泛应用于移动电话、便携式仪器、传真机和电池供电产品等领域。该芯片通过两线双向IC总线进行数据传输,最大总线速度为400 kbits/s。D8563TS内置了自动递增的字地址寄存器,支持多种功能…

【一次成功】Win10本地化单机部署k8s v1.31.2版本及可视化看板

【一次成功】Win10本地化单机部署k8s v1.31.2版本及可视化看板 零、安装清单一、安装Docker Desktop软件1.1 安装前<启用或关闭Windows功能> 中的描红的三项1.2 查看软件版本1.3 配置Docker镜像 二、更新装Docker Desktop三、安装 k8s3.1 点击启动安装3.2 查看状态3.3 查…

MoonSharp 文档五

目录 13.Coroutines&#xff08;协程&#xff09; Lua中的协程 从CLR代码中的协程 从CLR代码中的协程作为CLR迭代器 注意事项 抢占式协程 14.Hardwire descriptors&#xff08;硬编码描述符&#xff09; 为什么需要“硬编码” 什么是“硬编码” 如何进行硬编码 硬编…

【初级篇】如何使用DeepSeek和Dify构建高效的企业级智能客服系统

在当今数字化时代,企业面临着日益增长的客户服务需求。使用Dify创建智能客服不仅能够提升客户体验,还能显著提高企业的运营效率。关于DIfy的安装部署,大家可以参考之前的文章: 【入门级篇】Dify安装+DeepSeek模型配置保姆级教程_mindie dify deepseek-CSDN博客 AI智能客服…

【网络编程】HTTP网络编程

13.1 HTTP 简介 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是用于从万维网(WWW:World Wide Web) 服务器(简称Web 服务器)传输超文本到本地浏览器的传送协议&#xff0c;基于TCP/IP 通信协 议来传递数据 (HTML 文件、图片文件、查询结果等)。 13.2 HTTP 的工作原理 …

用Scrum敏捷的视角看《哪吒2》的创作

去年我们公司邀请Scrum中文网的老师培训了敏捷开发课程&#xff0c;让我对敏捷有了更深入的理解。前阵子我参加了scrum中文网的一个直播&#xff0c;老师分享了敏捷在个人领域或生活其他领域的应用&#xff0c;很有意思。因为我学习敏捷&#xff0c;除了应用到本身软件研发的工…

Docker+Flask 实战:打造高并发微服务架构

DockerFlask 实战&#xff1a;打造高并发微服务架构 今天我们要深入探讨一个非常热门且实用的主题&#xff1a;基于 Docker 部署 Python Flask 应用。Docker 作为当下最流行的容器化技术&#xff0c;已经广泛应用于各种开发和部署场景&#xff0c;尤其是在微服务架构中。而 Fl…

Linux find 命令完全指南

find 是 Linux 系统最强大的文件搜索工具&#xff0c;支持 嵌套遍历、条件筛选、执行动作。以下通过场景分类解析核心用法&#xff0c;涵盖高效搜索、文件管理及高级技巧&#xff1a; 一、基础搜索模式 1. 按文件名搜索&#xff08;精确/模糊匹配&#xff09; <BASH> f…

【量化策略】趋势跟踪策略

【量化策略】趋势跟踪策略 &#x1f680;量化软件开通 &#x1f680;量化实战教程 技术背景与应用场景 在金融市场中&#xff0c;趋势跟踪策略是一种基于市场趋势进行交易的量化投资方法。该策略的核心思想是“顺势而为”&#xff0c;即认为市场价格会沿着一定的方向持续移…

AI自动化、资本短视、三输与破局

当前AI应用中的一个深层矛盾&#xff1a;工程师使用AI将很专业的任务变成小白可以操作的工作&#xff0c;然后资本方给小白很少的钱把工程师裁掉了&#xff0c;然而小白不懂底层&#xff0c;出问题几乎无法修复。由此&#xff0c;技术普及与专业能力之间的断层引发了"三输…

Python数据分析之数据可视化

Python 数据分析重点知识点 本系列不同其他的知识点讲解&#xff0c;力求通过例子让新同学学习用法&#xff0c;帮助老同学快速回忆知识点 可视化系列&#xff1a; Python基础数据分析工具数据处理与分析数据可视化机器学习基础 四、数据可视化 图表类型与选择 根据数据特…

简述计算机网络中的七层模型和四层模型

在计算机网络中&#xff0c;网络协议栈的设计通常采用分层结构来处理不同的通信任务。常见的分层结构有OSI七层模型和TCP/IP四层模型。虽然它们的层次数量不同&#xff0c;但本质上都在解决如何有效地进行计算机间通信。本文将分别介绍这两种结构的功能和各层的协议。 一、OSI七…

2025高频面试算法总结篇【持续更新中】

文章目录 递归&回溯131. 分割回文串面试题 08.12. 八皇后 动态规划72编辑距离5. 最长回文子串279. 完全平方数300. 最长递增子序列 递归&回溯 131. 分割回文串 回溯思路&#xff1a; 临界条件&#xff1a; if (start s.length) > 保存 循环遍历这个字串 for (int…

【大模型学习】第二十二章 什么是对抗生成网络

目录 一、背景介绍 二、生活化例子说明什么是对抗生成网络 三、技术细节详解 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;训练机制 &#xff08;三&#xff09;损失函数 一、背景介绍 对抗生成网络&#xff08;Generative Adversarial Networks, GANs…

摄像头模块ISP处理流程

摄像头模块的ISP&#xff08;图像信号处理器&#xff09;处理流程是对图像传感器输出的原始信号进行系统性优化的过程&#xff0c;主要分为以下关键步骤及对应功能模块&#xff1a; 一、原始信号输入与预处理 ‌传感器信号捕获‌ CMOS/CCD传感器将光信号转换为模拟电信号&…