准备工作

事先创建一个Excel文件命名为“演示文档.xlsm”的,以实现通过运行名称为“演示”的宏,将A1单元格的内容复制到A2单元格中。

1.在“sheet1”的A1单元格输入“1.0.0.0”,作为excel文件的版本号。

2.通过开发工具中的Visual Basic,为工作簿添加模块,输入以下代码,建立宏

Sub 演示()Range("A2") = Range("A1")End Sub

3.文档另存为“演示文档.xlsm”。

一、创建Excel VSTO 工作簿的新项目

(一)新建解决方案和Excel VSTO 工作簿项目

1.创建一个Excel VSTO工作簿的新项目,选择“Excel VSTO工作簿(Visual Basic)”模板,项目名称命名为“ExcelVSTO工作簿”,解决方案名称命名为“Excel 工作簿安装程序”,框架选择“.NET Framework 4.6.1”。

2.在“为应用程序选择文档”界面,选择“复制现有文档”,选择事先设计好的“演示文档.xlsm”,注意选择文档类型对话框为“启用宏的Excel工作簿(*.xlsm)”格式。

(二)设计Excel VSTO工作簿程序

主要是设计菜单项和代码。

1.在“ExcelVSTO工作簿”项目上,点击右键,选择“添加”——“类”,在“添加新项-ExcelVSTO工作簿”界面,选择“office/sharepoint”中的“功能区(可视化设计器)”,点击“添加”后默认建立“Ribbon1.vb”的模块。

2.依次右键点击“Group1”、“TabAddins(内置)”,均选择“ 删除”。

(1)点击左侧的“工具箱”,拖拽“Office 功能区控件”中的Tab按钮到“Ribbon1.vb[设计]”中,修改右侧属性的有关值,如Label改为“工作簿演示”等。

(2)再次点击左侧的“工具箱”,拖拽“Office 功能区控件”中的Group按钮到“Ribbon1.vb[设计]”的“工作簿演示”里面,修改右侧属性的有关值,如Label改为“关于”等。

(3)点击左侧的“工具箱”,拖拽“Office 功能区控件”中的Button按钮到“Ribbon1.vb[设计]”中的帮助里面,修改右侧属性的有关值,如Label改为“复制数据”,ControlSize改为“RibbonControlSizeLarge”,OfficeImageId改为“Copy”等。

(4)重复第(3)点操作,将新的Button的属性,修改Label改为“版本”,ControlSize改为“RibbonControlSizeLarge”,OfficeImageId改为“FieldCodes”等。

3.双击“复制数据”,进入“Ribbon1.vb”的代码编辑界面,在Button1_Click的过程中,输入以下代码

Globals.ThisWorkbook.Application.Run("演示")

4.双击“版本”图标,进入“Ribbon1.vb”的代码编辑界面,在Button2_Click的过程中,输入以下代码

MsgBox("当前程序版本1.0.0.0" & vbNewLine & vbNewLine & "xlsm文件最新版本为V1.0.0")

(三)设定Excel VSTO工作簿版本

1.点击右上角“解决方案资源管理器”界面图标栏的主页右侧的“在解决方案和可用视图之间切换”按钮,将切换到文件夹视图,在“ExcelVSTO工作簿\My Project”文件夹下,双击“AssemblyInfo.vb”文件。

2.在“AssemblyInfo.vb”代码编辑界面,将“<Assembly: AssemblyVersion("1.0.0.0")>”的版本号改为"1.0.*",在<Assembly: AssemblyFileVersion("1.0.0.0")>前添加注释符号“‘ ”,将此行注释掉。

3.再次点击“在解决方案和可用视图之间切换”按钮,双击“Excel VSTO工作簿安装程序.sln”文件,恢复原始界面。

(四)生成Excel VSTo工作簿项目

1.将解决方案配置由Debug改为Release。

2.在“ExcelVSTO工作簿”项目上,点击右键,选择“属性”,在“外接程序安装”界面,选择“签名”中的“为ClickOnce清单签名”,点击“从文件选择”,选择提前编译好的证书文件,本例为“tsgazzb.pfx”,点击“打开”后显示“tsgazzb.pfx”证书的相关内容。

3.在“ExcelVSTO工作簿”项目上,点击右键,选择“生成”,将在此项目的输出目录内,生成一系列文件。

4. 在“ExcelVSTO工作簿”项目上,点击右键,选择“卸载项目”,在“ExcelVSTO工作簿.vbproj”代码编辑界面,搜索SolutionID,将SolutionID元素的 GUID 值复制到记事本留存,下一步将填写使用。在“ExcelVSTO工作簿”项目上,点击右键,选择“重新加载项目”,恢复原始界面。

二、添加安装包项目

(一)新建安装包项目

在解决方案“Excel 工作簿安装程序”上,点击右键,选择“添加”——“新建项目”,选择“Setup Project”模板,命名为“安装包”。

(二)连接Excel VSTO 工作簿项目

在“安装包”项目上,点击右键,选择“Add”——“项目输出”,在“添加项目输出组”界面,选择“项目”中的“主输出”,上方下拉菜单选择Excel VSTO工作簿的项目名称“ExcelVSTO工作簿”,其他配置不变,点击确定。

(三)添加Excel VSTO工作簿的部署、应用清单文件

在“安装包”项目上,点击右键,选择“Add”——“文件”,在“Add Files”界面,选择Excel VSTO 工作簿的项目“ExcelVSTO工作簿”文件夹的输出目录。

本例的具体目录如下:

D:\source\repos\Excel 工作簿安装程序\ExcelVSTO工作簿\bin\Release

选择部署文件“ExcelVSTO工作簿.vsto”、应用清单文件“ExcelVSTO工作簿.dll.manifest”,点击“打开”后将导入两个文件到“安装包”项目。

(四)排除Excel VSTO 工作簿项目的依赖项目

点开“安装包”项目的“Detected Dependencies”左侧的箭头,选择除“Microsoft .NET Framework”和任何以“*.Utilities.dll” 结尾的程序集以外的项目,一般情况下选择的数量是6个文件,点击右键,选择“排除”,被选中的文件左侧出现红色禁止图标。

(五)配置运行环境的必备组件

1.对于 Excel VSTO 外接程序项目,安装目标计算机必须满足必备组件的安装前置条件,然后才能正常运行外接程序:

(1)Microsoft .NET Framework:

安装目标计算机的.net Framework版本号高于解决方案要求的版本号的,将不安装该组件。

(2)Microsoft Visual Studio 2010 Tools for Office Runtime:

安装目标计算机的office版本为2013及以上的,将不按照该组件。

2.在“安装包”项目上,点击右键,选择“属性”。

(1)在“安装包属性”界面,点击“Prerequisiter”,在“系统必备”界面,勾选“创建用于安装系统必备组件的安装程序”。

(2)在“请选择要安装的系统必备组件”中,选择“Microsoft .NET Framework 4.*.*(x86和x64)”和“Microsoft Visual Studio 2010 Tools for Office Runtime(x86和x64)”。

(3)在“指定系统必备组件的安装位置”中,选择“从与我的应用程序相同的位置下载系统必备组件”,点击“确定”,退出相应界面。

(4)“安装包属性”界面,还可以修改msi安装包的名称。

(六) 配置启动条件

安装包将通过启动条件来判断安装目标计算机是否具备运行环境的必备组件,如果不具备将阻止外接程序的安装。

1.检测VSTO Runtime

(1)在“安装包”项目上,点击右键,选择“View”——“启动条件”,在“Launch Conditions(安装包)”界面,右键单击“Requirements on Target Machine”,然后单击“添加注册表启动条件”,将在“Search Target Machine”下方添加“Search for RegistryEntry1”项。

(2)点击“Search for RegistryEntry1”项,从右下角的属性界面中,按以下内容修改相关值

(Name):Search for VSTO 2010 Runtime

Property:VSTORUNTIMEREDIST

RegKey:SOFTWARE\Microsoft\VSTO Runtime Setup\v4R

Root:vsdrrHKLM

Value:Version

(3)点击“Condition1”项,从右下角的属性界面中,按以下内容修改相关值

(Name): Verify VSTO 2010 Runtime availability

Condition:VSTORUNTIMEREDIST>="10.0.30319"

InstallURL:空着不填

Message:The Visual Studio 2010 Tools for Office Runtime没有安装,请运行Setup.exe文件安装此插件。

2.检测Office安装的VSTO Runtime

(1)在“Launch Conditions(安装包)”界面,右键单击“Requirements on Target Machine”,然后单击“添加注册表启动条件”,将在“Search Target Machine”下方添加“Search for RegistryEntry1”项。

(2)点击“Search for RegistryEntry1”项,从右下角的属性界面中,按以下内容修改相关值

(Name): Search for Office VSTO Runtime

Property: OfficeRuntime

RegKey:SOFTWARE\Microsoft\VSTO Runtime Setup\v4

Root:vsdrrHKLM

Value:Version

(3)删除“Condition1”项,点击之前设置的“Verify VSTO 2010 Runtime availability”项,从右下角的属性界面中,将“Condition”项修改为以下内容:

VSTORUNTIMEREDIST >="10.0.30319" OR OFFICERUNTIME>="10.0.21022"

其他内容不变。

三、添加自定义操作项目

(一)新建项目

在解决方案“Excel 工作簿安装程序”上,点击右键,选择“添加”——“新建项目”,选择“控制台应用(.NET Framework) C#”模板,

命名为“AddCustomizationCustomAction”,框架依然选择为“.NET Framework 4.6.1”。

(二)添加引用

在“AddCustomizationCustomAction”项目上,点击右键,选择“添加”——“引用”,在“引用管理器-AddCustomizationCustomAction”界面,搜索以下引用并添加。

(1)System.Configuration.Install

(2)Microsoft.VisualStudio.Tools.Applications.Runtime

(3)Microsoft.VisualStudio.Tools.Applications.ServerDocument

如果有需要再添加System.ComponentModel引用。

(三)编辑代码

双击“Program.cs”文件,在代码编辑界面,用以下代码覆盖原有代码。

using System;using System.IO;using System.Collections;using System.ComponentModel;using System.Configuration.Install;using Microsoft.VisualStudio.Tools.Applications;using Microsoft.VisualStudio.Tools.Applications.Runtime;namespace AddCustomizationCustomAction{[RunInstaller(true)]public class AddCustomizations : Installer{public AddCustomizations() : base() { }public override void Install(IDictionary savedState){base.Install(savedState);//Get the CustomActionData Parametersstring documentLocation = Context.Parameters.ContainsKey("documentLocation") ? Context.Parameters["documentLocation"] : String.Empty;string assemblyLocation = Context.Parameters.ContainsKey("assemblyLocation") ? Context.Parameters["assemblyLocation"] : String.Empty;string deploymentManifestLocation = Context.Parameters.ContainsKey("deploymentManifestLocation") ? Context.Parameters["deploymentManifestLocation"] : String.Empty;Guid solutionID = Context.Parameters.ContainsKey("solutionID") ? new Guid(Context.Parameters["solutionID"]) : new Guid();string newDocLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Path.GetFileName(documentLocation));try{//Move the file and set the Customizationsif (Uri.TryCreate(deploymentManifestLocation, UriKind.Absolute, out Uri docManifestLocationUri)){if (File.Exists(newDocLocation))File.Delete(newDocLocation);File.Move(documentLocation, newDocLocation);ServerDocument.RemoveCustomization(newDocLocation);ServerDocument.AddCustomization(newDocLocation, assemblyLocation,solutionID, docManifestLocationUri,true, out string[] nonpublicCachedDataMembers);}else{LogMessage("The document could not be customized.");}}catch (ArgumentException){LogMessage("The document could not be customized.");}catch (DocumentNotCustomizedException){LogMessage("The document could not be customized.");}catch (InvalidOperationException){LogMessage("The customization could not be removed.");}catch (IOException){LogMessage("The document does not exist or is read-only.");}}public override void Rollback(IDictionary savedState){base.Rollback(savedState);DeleteDocument();}public override void Uninstall(IDictionary savedState){base.Uninstall(savedState);DeleteDocument();}private void DeleteDocument(){string documentLocation = Context.Parameters.ContainsKey("documentLocation") ? Context.Parameters["documentLocation"] : String.Empty;try{File.Delete(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Path.GetFileName(documentLocation)));}catch (Exception){LogMessage("The document doesn't exist or is read-only.");}}private void LogMessage(string Message){if (Context.Parameters.ContainsKey("LogFile")){Context.LogMessage(Message);}}static void Main() { }}}

其中:

if (File.Exists(newDocLocation))

File.Delete(newDocLocation);

代码会将老版本删除,较新的Excel文档不会因已存在文档而无法复制。

(四)生成项目

在“AddCustomizationCustomAction”项目上,点击右键,选择“生成”,将在此项目的输出目录内,生成一系列文件。

(五)配置用于安装和卸载步骤的自定义操作

1.在“安装包”项目上,点击右键,选择“Add”——“项目输出”,在“添加项目输出组”界面,选择“项目”中的“主输出”,上方下拉菜单选择自定义操作的项目名称“AddCustomizationCustomAction”,其他配置不变,点击确定。

2.在“安装包”项目上,点击右键,选择“View”——“自定义操作”,在“Custom Actions(安装包)”界面,右键单击“Custom Actions”,然后单击“添加自定义操作”。

3. 在 Project 中的“Select Item in Project”对话框中的“Look In”列表中,双击“Application Folder”。 选择“主输出from AddCustomizationCustomAction (active)” ,然后单击“OK”,将自定义操作添加到安装步骤。

4. 在“Install”节点下,右键单击“主输出from AddCustomizationCustomAction (Active)”,然后单击“ 重命名”。 命名自定义操作为“Copy document to My Documents and attach customization”。

5.在“Uninstall”节点下,右键单击“主输出from AddCustomizationCustomAction (Active)”,然后单击“ 重命名”。 命名自定义操作为“Remove document from the Documents folder”。

6.点击“Install”节点下的“Copy document to My Documents and attach customization”,在右下角的属性界面,在 CustomActionData中,输入自定义 DLL 的位置、部署清单和 Microsoft Office 文档的位置,还需要 SolutionID。如果要将任何安装错误记录到文件中,请包含 LogFile 参数(取消其参数,在卸载时可以自动删除安装文件夹,否则log文件删除不掉)。

/assemblyLocation="[TARGETDIR]ExcelVSTO工作簿.dll" /deploymentManifestLocation="[TARGETDIR]ExcelVSTO工作簿.vsto" /documentLocation="[TARGETDIR]演示文档.xlsm" /solutionID="079fb922-36a6-431d-a0e9-a0fe2dfb839d" /LogFile="[TARGETDIR]Setup.log"

7. 点击“Uninstall”节点下的“Remove document from the Documents folder”,在右下角的属性界面,在 CustomActionData中,输入

/documentLocation="[INSTALLDIR] 演示文档.xlsm"

四、生成安装程序

(一)设定安装包版本

点击“安装包”项目,在下方的属性界面,按照以下要求修改相应值:

(1)Author:公司或组织名称,如河北省唐山市××局

(2)DetectNewerInstall:True

(3)Manufacturer:同Author,此项将作为programe file下面的安装文件夹名称

(4)ProductName:改成你想在安装界面显示的名称

(5)RemovePreviousVersions:True

(6)Version:首次一般为“1.0.0”,以后可修改“1.0.1”等,修改后弹出的对话框,请选择“是”。

(二)生成安装程序

1.在“安装包”项目上,点击右键,选择“生成”,将在此项目的输出目录内,生成一系列文件。解决方案有修改时,建议选择“重新生成”,可将所有项目全部生成。

2.选择菜单栏的“全部保存”按钮,将本项目存盘。

(三)运行安装程序

打开windows文件资源管理器,进入“\repos\外接程序安装\安装包\Release”文件夹,将所有文件拷贝到安装目标计算机,运行setup.exe文件进行安装。

(四)项目更新后生成安装包

1.Excel工作簿更新

在“sheet1”的A1单元格输入“1.0.1”

2.VSTO外接程序项目更新

在“Ribbon1.vb[设计]”界面,双击“版本”图标,进入“Ribbon1.vb”的代码编辑界面,在Button1_Click的过程中,输入以下代码

MsgBox("version 1.0.1")

3.修改安装包版本

点击“安装包”项目,在下方的属性界面,将Version修改“1.0.1”等,修改后弹出的对话框,请选择“是”。

4.生成安装包

在“安装包”项目上,点击右键,选择“重新生成”,可将所有项目全部生成。

创建 VSTO 工作簿的windows安装包相关推荐

  1. inno setup打包的安装包如何在卸载完程序后可以继续安装_这两个方法就够了!快速制作Python程序Windows安装包...

    点击关注州的先生 编程应用.实战教程,不容错过 /00/ 前言 我们使用Python可以编写很多提高工作和学习效率的小工具,在编写完之后,如果我们想将其分享给更多的人使用,那么最便捷的方法就是将其打包 ...

  2. python卸载_如何为Python程序制作Windows安装包?

    我们使用Python可以编写很多提高工作和学习效率的小工具,在编写完之后,如果我们想将其分享给更多的人使用,那么最便捷的方法就是将其打包为可执行程序. 在Windows环境下,我们使用Pyinstal ...

  3. 打包pyinstaller生成的python桌面应用为windows安装包的方法教程

    本篇文章主要讲解使用nsis制作windows安装包的方法. 日期:2022年12月7日 作者:任聪聪 一.准备材料 1.nsis软件 nsis是一款生成windows安装包的一款压缩工具 下载地址: ...

  4. 使用Spire.XLS来创建Excel 工作簿

    概要 最近在研究 .NET 控件,使用这些控件能在程序中可以快速低成本实现开发功能.前面提到了如何使用Spire.XLS来制作报表,在这一篇中我 将讲到的是如何用用它来创建一个简单的Excel工作簿. ...

  5. 制作windows安装包

    制作windows安装包 制作工具选择 资源链接 setup factory安装 setup factory使用 制作工具选择 百度搜索,发现有不少制作工具,但大部分都需要收费.而且操作复杂.经过大量 ...

  6. EXCEL VBA创建sheet/工作簿

    1.需要创建以地市命名的系列sheet,但不想手动创建改名. 代码实现如下: Sub SheetAdd()Dim i As Long'定义一个长整型变量Sheets.Add After:=Sheets ...

  7. windows安装包删了会有影响吗_安装包删除有什么影响

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 删除安装包对软件运行没有影响,因为支持软件运行的是解压释放到硬盘上的软件目录,并不是安装包. 安装包(Install pack), ...

  8. NSIS安装包开发笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/116445811 长期持续带来更多项目与技术分 ...

  9. 0. 【R、Rstudio、Rtools 】软件的安装 + 【初始化Rstudio】:镜像、字体、修改默认工作路径 、默认安装包路径

    文章目录 1. R软件安装 2. Rstudio的安装 3. Rtools 的安装 4. 初始化Rstudio 4.1. 更改Rtudio的镜像为中国清华大学,下载包更快 4.2. 设置主题和字体大小 ...

  10. 【Tableau Desktop 企业日常技巧6.0】Tableau如何将示例工作簿替换为自定义工作簿?(windows版本)

    文章目录 前言 通过注册表 前言 一般我们安装好Tableau Desktop的时候会默认三个自带的示例工作簿,最新版本的2021.3开始可以用自定义的五个工作簿.如下: 自定义示例工作簿必须满足以下 ...

最新文章

  1. 32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...
  2. mysql error -1_【Mysql】SQLException: Got error -1 from storage engine 问题解决!
  3. python求图形面积_求高效的,计算两多边形重叠面积的算法,python实现
  4. 为什么阿里巴巴不允许使用Executors?
  5. 用友软件动态密码安全认证解决方案
  6. 专家解惑 | 关于华为云盘古大模型,你想问的都在这里~
  7. python的numpy教程_Python入门教程(一):初识Numpy
  8. Java script生成apk_Android 命令行编译、打包生成apk文件
  9. 如何获取git diff文件,并将其应用于作为同一存储库副本的本地分支?
  10. 剑指offer面试题18. 删除链表的节点(双指针)(链表)
  11. 机器学习中的特征工程总结
  12. 去年北京居民服务消费快速增长 占消费支出半壁江山
  13. java ajax_Ajax Java示例
  14. 软件项目管理第4版课后习题[附解析]第九章
  15. 论为什么需要软件工程
  16. 火绒软件+软媒雷达(win10,弥补了火绒无优化内存服务)
  17. sunshine in the rain
  18. java pacs上传服务_PACS千万家,好看耐用第一家---基于JAVA开发的跨平台PACS系统
  19. github上下载nacos教程并安装
  20. matlab 波前像差,波前像差(波阵面像差)的基本知识

热门文章

  1. 多元统计分析朱建平pdf_应用多元统计分析 朱建平.pdf
  2. 数据库系统-数据库设计
  3. 微型计算机控制技术第二版第六章课后答案,微型计算机控制技术第6章习题答案...
  4. 超市管理系统软件测试用例图,《天天超市管理系统》所有模块测试用例集.doc...
  5. 使用VC2005一些问题及解决方案
  6. 广工Anyview数据结构习题
  7. 雨滴桌面显示html,使用雨滴rainmeter打造炫酷桌面的方法!
  8. 查看单元测试用例覆盖率新姿势:IDEA 集成 JaCoCo
  9. ROM 、RAM和FLASH 的区别
  10. vijos1655萌萌的糖果博弈