有时我们除了需要安装系统必备组件之外,还需要做自定义的子安装程序,如我的需要安装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 打包添加系统必备组件相关推荐

  1. 将系统必备组件打包进安装文件(以vs15打包.net formwork 4.5为例)有点鸡肋

    首先,如何将程序打包为安装文件?可查看:使用VS2015制作安装包 若vs15新建工程中没有Visual Studio Installer选项,可通过下面链接下载安装包即可. 官方下载链接(特别慢) ...

  2. VS2017 打包 从与我的应用程序相同的位置下载系统必备组件

    VS2017第一次打包程序,想把NET4.5.2打包进项目,遇到: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必 ...

  3. vs打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“Microsoft .NET Framework 4.7.2 (x86 和 x64)”项的文件

    错误内容: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必须将"Microsoft .NET Frame ...

  4. VS 打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”

    发布前,我选择的系统必备组件为.net framework4.5.2和sql server2008 r2,所以报错的内容为: 解决方案: 分别下载.net包和.net语言包/sql server200 ...

  5. VS2015 打包应用程序“系统必备”

    严重性    代码    说明    项目    文件    行    禁止显示状态 错误        要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统 ...

  6. vs2010打包系统必备选择.net framework 3.5sp1编译错误的解决方法

    利用visual studio 2010进行打包程序,默认安装的是Framework 4.0,如果需要将3.5sp1打包到系统中一起安装(选择了"从与我的应用程序相同的位置下载系统必备组件& ...

  7. [转]ClickOnce部署出现 系统必备的安装位置未设置为组件供应商的网站,无法在磁盘上找到 dotNetFx40LP_Client_x86_x64cs.exe 问题的解决方案...

    http://blog.csdn.net/fxfeixue/archive/2010/10/12/5936015.aspx 当我们使用简体中文或繁体中文版本的 Visual Studio 2010 发 ...

  8. ClickOnce部署出现 系统必备的安装位置未设置为组件供应商的网站,无法在磁盘上找到 dotNetFx40LP_Client_x86_x64cs.exe 问题的解决方案

    当我们使用简体中文或繁体中文版本的 Visual Studio 2010 发布应用程序时,如果在"系统必备"对话框中选中"从与我的应用程序相同的位置下载系统必备组件&qu ...

  9. (转) 选择 NET Framework 3.5 SP1 系统必备,ClickOnce 发布提示缺少文件的解决方案

    ClickOnce 发布,在系统必备中勾选了 .NET Framework 3.5 SP1,并选择了"从与我的应用程序相同的位置下载系统必备组件"时,执行发布,会提示缺少很多文件, ...

最新文章

  1. jsp注册里密码强弱怎么弄_jsp+servlet实战酷炫博客+聊天系统
  2. Xamarin.Forms的ActivityIndicator和ProgressBar比较
  3. 线性筛选素数法(O(n)复杂度)
  4. python中字符串的制表符为_零基础学python_03_字符串(拼接+换行+制表符)
  5. 解决<style>无法重写.css文件的问题
  6. wopi php,Office Online Server WOPI 接口
  7. 一文教你如何在生产环境中在Kubernetes上部署Jaeger
  8. mysql慢查询日志轮转_MySQL slow log相关参数解释
  9. const,static,extern 简介
  10. 菜鸟学Linux 第031篇笔记 script,控制,while,function
  11. 少年,这有套《街霸2》AI速成心法,想传授于你……
  12. 谷歌如何在设计上脱胎换骨
  13. 韩国军事网络指挥中心遭到网络攻击
  14. linux安装yum报错Unable to locate package yum解决方案
  15. 怎么用C语言读取gcode文件,arduino当Gcode解释程序(CNC)
  16. 《那些年啊,那些事——一个程序员的奋斗史》七
  17. 建网站域名服务器那个好,如何选择好建网站的域名?
  18. NSDate中夏令时的坑你知道吗
  19. 【砸壳STEP2】使用cycript查看并修改微信UI界面
  20. linux 内核 空指针,Linux 内核IS_ERR函数

热门文章

  1. github emoji 表情列表
  2. SQL 查询数据打印并导出EXECL
  3. SpringBoot与Spring的对比
  4. 安装rational rose
  5. DOS BAT批处理定义变量
  6. linux查看进程号和进程
  7. 我发现一个新的软件,用自然语言编程!非常酷!
  8. 程序员应该如何自我驱动,迅速获得成长?
  9. Spring Boot读取配置的几种方式
  10. 11.C程序内存空间分配