VS2015 打包添加系统必备组件
有时我们除了需要安装系统必备组件之外,还需要做自定义的子安装程序,如我的需要安装2007 Office System Driver: Data Connectivity Components!现将操作步骤整理如下,希望能对如我一般陷此困惑的朋友有所帮助,或能抛砖引玉!(1)将自定义的安装程序COPY至Bootstrapper文件夹中VS2015(不同vs版本有不同的Bootstrapper目录)的系统必备项是用特定文件路径和xml描述文件一起构成的,这点倒是和JAVA应用服务器很像。这个Bootstrapper是具体路径在我的机器中是:“C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages”。在这个目录中,您可很清楚地看到在VS2015部署程序中可选的所有的组件,呵呵。我们要依葫芦画瓢同样建一个文件夹“Data Connectivity Components”这样的系统必备组件。名称就起“Access Database Engine”好了。如下: 在“Data Connectivity Components”文件夹中,断续建一个“en”安装本地化文件夹(中国的建zh-CHS),将安装程序COPY进这个文件夹中,如:
(2)创建产品清单和程序包清单产品清单其实就是“Data Connectivity Components”文件夹下的那个product.xml文件;程序包清单其实就是“en”文件夹下的package.xml文件。
Product.xml文件的清单如下:
<?xml version="1.0" encoding="utf-8" ?>
<Productxmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"ProductCode="AccessDatabaseEngine" ><!-- Defines list of files to be copied on build -->
</Product>
这倒没什么可说的,Package.xml文件的清单如下:
<?xml version="1.0" encoding="utf-8"?>
<Package Name="DisplayName" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"><InstallChecks><RegistryFileCheck Property="ACEVERSION" Key="HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\InstallRoot" Value="Path" FileName="1033\ACEODBCI.DLL" /></InstallChecks><PackageFiles CopyAllPackageFiles="false"><PackageFileName="AccessDatabaseEngine.exe"HomeSite="HomeSiteName_32"/></PackageFiles><Commands Reboot="Defer"><Command PackageFile="AccessDatabaseEngine.exe"><InstallConditions> <BypassIf Property="ACEVERSION" Compare="ValueExists"/> </InstallConditions><ExitCodes><ExitCode Value="0" Result="Success" /><DefaultExitCode Result="Fail" String="Anunexpected" FormatMessageFromSystem="true" /></ExitCodes></Command> </Commands><Strings><String Name="Culture">EN</String><String Name="DisplayName">Access Database Engine</String><String Name="HomeSiteName_32">http://downloads.hotdocs.com/downloads/hd11/player/HotDocs_Player_11_32bit.exe</String> <String Name="AdminRequired">You do not have the permissions required to install this application. Please contact your administrator.</String><String Name="Anunexpected">An unexpected exit code was returned from the installer. The installation failed.</String></Strings></Package>
Package 元素的 Name 属性的值 其实就是 在VS2015部署程序的系统必备选择框中显示的组件名称。<PackageFiles>元素用来指定组件包括的文件,要将每个安装文件要用子元素<PackageFile>指定出来哦,VS2015部署程序在编译生成安装文件时,就是按这个清单将组件的文件COPY过去的。<InstallChecks> < Commands >这两个元素是要配对的,和struts框架的控制文件一样,它们的主要作用就是利用注册表项或文件来判断组件是否需要安装。我是用注册表来判断驱动是否已经在客户端上安装,就需要用<RegistryCheck>元素来检查,用“HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\InstallRoot”这个注册表键来判断检查,并给这个检查项目起个名字叫“ACEVERSION”。
<Command>元素则是在<InstallConditions>元素指定的条件满足时,执行相应的组件安装程序,这里我的安装程序是“AccessDatabaseEngine.exe”,是一个普通的安装程序,没有参数。<InstallConditions>元素我的理解就是指定安装条件啦,<BypassIf Property="ACEVERSION" Compare="ValueExists"/>一句我的想法是:
如果注册表存在这个键就认为已经安装了客户端,就不用执行精简客户端安装,否则视为没有安装,就要执行。(3)配置完毕!我们到VS2015部署程序的系统必备选择项中找找,果真发现了“Data Connectivity Components”这个组件了。如下图:
转载于:https://www.cnblogs.com/fire_to_fire/p/7692056.html
VS2015 打包添加系统必备组件相关推荐
- 将系统必备组件打包进安装文件(以vs15打包.net formwork 4.5为例)有点鸡肋
首先,如何将程序打包为安装文件?可查看:使用VS2015制作安装包 若vs15新建工程中没有Visual Studio Installer选项,可通过下面链接下载安装包即可. 官方下载链接(特别慢) ...
- VS2017 打包 从与我的应用程序相同的位置下载系统必备组件
VS2017第一次打包程序,想把NET4.5.2打包进项目,遇到: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必 ...
- vs打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“Microsoft .NET Framework 4.7.2 (x86 和 x64)”项的文件
错误内容: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必须将"Microsoft .NET Frame ...
- VS 打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”
发布前,我选择的系统必备组件为.net framework4.5.2和sql server2008 r2,所以报错的内容为: 解决方案: 分别下载.net包和.net语言包/sql server200 ...
- VS2015 打包应用程序“系统必备”
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统 ...
- vs2010打包系统必备选择.net framework 3.5sp1编译错误的解决方法
利用visual studio 2010进行打包程序,默认安装的是Framework 4.0,如果需要将3.5sp1打包到系统中一起安装(选择了"从与我的应用程序相同的位置下载系统必备组件& ...
- [转]ClickOnce部署出现 系统必备的安装位置未设置为组件供应商的网站,无法在磁盘上找到 dotNetFx40LP_Client_x86_x64cs.exe 问题的解决方案...
http://blog.csdn.net/fxfeixue/archive/2010/10/12/5936015.aspx 当我们使用简体中文或繁体中文版本的 Visual Studio 2010 发 ...
- ClickOnce部署出现 系统必备的安装位置未设置为组件供应商的网站,无法在磁盘上找到 dotNetFx40LP_Client_x86_x64cs.exe 问题的解决方案
当我们使用简体中文或繁体中文版本的 Visual Studio 2010 发布应用程序时,如果在"系统必备"对话框中选中"从与我的应用程序相同的位置下载系统必备组件&qu ...
- (转) 选择 NET Framework 3.5 SP1 系统必备,ClickOnce 发布提示缺少文件的解决方案
ClickOnce 发布,在系统必备中勾选了 .NET Framework 3.5 SP1,并选择了"从与我的应用程序相同的位置下载系统必备组件"时,执行发布,会提示缺少很多文件, ...
最新文章
- jsp注册里密码强弱怎么弄_jsp+servlet实战酷炫博客+聊天系统
- Xamarin.Forms的ActivityIndicator和ProgressBar比较
- 线性筛选素数法(O(n)复杂度)
- python中字符串的制表符为_零基础学python_03_字符串(拼接+换行+制表符)
- 解决<style>无法重写.css文件的问题
- wopi php,Office Online Server WOPI 接口
- 一文教你如何在生产环境中在Kubernetes上部署Jaeger
- mysql慢查询日志轮转_MySQL slow log相关参数解释
- const,static,extern 简介
- 菜鸟学Linux 第031篇笔记 script,控制,while,function
- 少年,这有套《街霸2》AI速成心法,想传授于你……
- 谷歌如何在设计上脱胎换骨
- 韩国军事网络指挥中心遭到网络攻击
- linux安装yum报错Unable to locate package yum解决方案
- 怎么用C语言读取gcode文件,arduino当Gcode解释程序(CNC)
- 《那些年啊,那些事——一个程序员的奋斗史》七
- 建网站域名服务器那个好,如何选择好建网站的域名?
- NSDate中夏令时的坑你知道吗
- 【砸壳STEP2】使用cycript查看并修改微信UI界面
- linux 内核 空指针,Linux 内核IS_ERR函数