如何用VS2008安装部署做自定义的子安装程序

vs2008 水晶报表部署后安装报错 将部署好的项目放到服务器上时,出现以下错误信息:配置错误分析器错误消息: 未能加载文件或程序集“CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”或它的某一个依赖项。系统找不到指定的文件。源错误: 源错误: 行 27: 阅读详情

有时我们除了需要安装系统必备组件之外,还需要做自定义的子安装程序,如我的系统安装程序就需要同时安装Oracle精简客户端(网上下载的精简3.0版,以下简称JOracle30)才能支撑系统数据库的应用,怎样才能让VS2008部署程序自动执行这套JOracle30的安装程序呢?

我首先想到的是用程序去实现,必竟大名鼎鼎的InstallShield安装系统也是MS做的,VS2008部署程序应该也是集成的InstallShield吧,用DoInstall脚本函数还是能轻而易举地调用其他安装程序的。可是,我将IDE翻了个遍也没有找到VS2008部署系统的程序入口,感情是人家根本就没有提供脚本程序让你写吧?C#到是可以写个类来控制,可我的是VC++程序,折腾半天还不知能不能用,还是另外找条路吧。

于是好一阵闹腾,网上帖子都翻遍了,都是不咸不淡,语焉不详,正心灰意冷时,突然想起了在系统安装部署制作时,要选择系统必备项,是不是可以将Joracle30作为系统必备项让部署程序进行选择呢?这样的安装程序可能既专业又优雅。这样我的突破重点就是如何针对VS2008做自定义的系统必备项了。结果证明我的方向是完全正确的,经过半天的努力,终于成功了!现将操作步骤整理如下,希望能对如我一般陷此困惑的朋友有所帮助,或能抛砖引玉!

(1)将自定义的安装程序COPY至Bootstrapper文件夹中

VS2008的系统必备项是用特定文件路径和xml描述文件一起构成的,这点倒是和JAVA应用服务器很像。这个Bootstrapper是具体路径在我的机器中是:“C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bootstrapper/Packages”。在这个目录中,您可很清楚地看到在VS2008部署程序中可选的所有的组件,呵呵。我们要依葫芦画瓢同样建一个文件夹“Oracle精简客户端”这样的系统必备组件。名称就起“Oracle9i客户端精简版30”好了。如下:

 

在“Oracle9i客户端精简版30”文件夹中,断续建一个“zh-CHS”安装本地化文件夹,将安装程序COPY进这个文件夹中,如:

 

我的Oracle精简客户端安装有两文件,“Oracle9i客户端精简版3.0.msi”和“Oracle9i客户端精简版3[1].0.part2.rar”。

至此,我们将系统必备项所需的目录结构建好了,但是还不行,还需要将描述文件手动构建起来,其实就是两个xml文件。

(2)创建产品清单和程序包清单

产品清单其实就是“Oracle9i客户端精简版30”文件夹下的那个product.xml文件;程序包清单其实就是“zh-CHS”文件夹下的package.xml文件。

Product.xml文件的清单如下:

 

<?xml version="1.0" encoding="utf-8"?>

<Product ProductCode="Oracle9i 精简客户端3_青蛙王子" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">

</Product>

这倒没什么可说的,倒是这个ProductCode究竟是不是一定用精简客户端安装的ProductCode我还没有发现有什么弊端,我在一台已安装精简客户端的机器的注册表将实际的ProductCode找了出来,但是没有用它,反正我用"Oracle9i 精简客户端3_青蛙王子"这个字符串也能工作。

Package.xml文件的清单如下:

 

<?xml version="1.0" encoding="utf-8"?>

<Package Name="Oracle9i 精简客户端3_0"  Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">

  <InstallChecks>

    <RegistryCheck Property="ORACLE_INST" Key="HKLM/SOFTWARE/Microsoft/ORACLE/inst_loc" Value="C:/Program Files/Oracle/Inventory"/>

  </InstallChecks>

 

  <PackageFiles CopyAllPackageFiles="false">

    <PackageFile Name="Oracle9i客户端精简版3[1].0.part2.rar"/>

    <PackageFile

      Name="Oracle9i客户端精简版3.0.msi"

      HomeSite="HomeSiteName_32" />

  </PackageFiles>

 

  <Commands Reboot="Defer">

    <Command PackageFile="Oracle9i客户端精简版3.0.msi" Arguments=''>

      <InstallConditions>

        <BypassIf Property="ORACLE_INST" Compare="ValueExists"/>

      </InstallConditions>

    </Command>

  </Commands>

</Package>

Package 元素的 Name 属性的值 其实就是 在VS2008部署程序的系统必备选择框中显示的组件名称。

<PackageFiles>元素用来指定组件包括的文件,要将每个安装文件要用子元素<PackageFile>指定出来哦,VS2008部署程序在编译生成安装文件时,就是按这个清单将组件的文件COPY过去的。

<InstallChecks> < Commands >这两个元素是要配对的,和struts框架的控制文件一样,它们的主要作用就是利用注册表项或文件来判断组件是否需要安装。我是用注册表来判断oracle是否已经在客户端上安装,就需要用<RegistryCheck>元素来检查,用“HKLM/SOFTWARE/Microsoft/ORACLE/inst_loc”这个注册表键来判断检查,并给这个检查项目起个名字叫“ORACLE_INST”。

<Command>元素则是在<InstallConditions>元素指定的条件满足时,执行相应的组件安装程序,这里我的安装程序是“Oracle9i客户端精简版3.0.msi”,是一个普通的安装程序,没有参数。

<InstallConditions>元素我的理解就是指定安装条件啦,<BypassIf Property="ORACLE_INST" Compare="ValueExists"/>一句我的想法是:如果注册表存在“HKLM/SOFTWARE/Microsoft/ORACLE/inst_loc”这个键就认为已经安装了Oracle客户端,就不用执行精简客户端安装,否则视为没有安装,就要执行。

   (3)配置完毕!

我们到VS2008部署程序的系统必备选择项中找找,果真发现了“Oracle9i 精简客户端3_0”这个组件了。如下图:

 

呵,以下就是选择他,编译生成部署项目即可。在生成的安装目录中,精简客户端目录就在其中。  (4)运行setup.exe文件,即可执行安装程序了,记住了,不是执行msi文件,msi安装文件不能进行系统必备组件的判断安装。系统必备组件安装如下图。

 

 

(5)有一点遗憾的是,我的本意如果客户端已经安装了Oracle客户端,就不用执行精简客户端安装,没有安装,就要执行。可我将这个安装软件在已经安装了Oracle客户端的机器上试运行时,安装软件还是提示需要安装“Oracle9i 精简客户端3_0”,虽然安装过程一闪而过,可能实际上并没有执行,是不是我的描述文件没有理解对呢?

青蛙王子:很抱歉,图片无法显示出来,不过看文字还是可以看懂。

vs2008安装部署软件过程 1、在 Microsoft Visual Studio 2005的“文件”菜单上,单击“新建”,然后单击“项目”。 2、在“新建项目”对话框中,选择“其他项目类型”,再选择“安装和部署”,然后在模板中选择“安装项目”。 3、键入 TestSetup 作为该程序的名称,然后单击 阅读详情

相关推荐

vc++6.0,vc++2008,vs2008的关系

VS是Visual Studio的缩写,VC++是Visual C++。Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助

dgglx的专栏 5347

【安装部署】vs2008安装部署工程制作教程(自定义安装界面)

<br /> 1. 新建一个Class Library, 例如Name 为 CustomAction. 这个就是一个自定义安装行为的类。<br /><br />2. 添加安装类。在新建的Library里面添加一个 Installer Class,名字我暂时定为MyInstallerClassDll<br /><br />3. 重写基类的函数<br />Commit Install OnAfterInstall OnAfterRollback OnAfterUninstall OnBefore

wonsoft的专栏 8914

VS2008制作安装包过程

VS2008制作安装包过程 包括打包程序exe,dll,桌面快捷方式,开始菜单,卸载。

Visual Studio 2008系列教程(一):VS 2008安装详解!

想要用VS 2008的话,肯定就先要将它下载下来然后安装上(呵呵,好像是费话)!MSDN 2008 中文版 http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A2

王俊超的专栏 2万+

VS2008自定义安装程序

VS2008自定义安装程序,包括快捷方式和卸载

vs2008打包安装包全过程

vs2008 打包安装包 包含卸载功能卸载

VS2008 水晶报表部署

打开VS安装目录 X:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5 安装“CRRedist2008_x86.msi”和语言包程序h-CHS下的“CRRedist2008_x86_chs.msi” 然后部署你的应用程序就OK了 可以把这两个程序打包在

wzk456的专栏 3968

vs2008程序打包方法

vs2008程序打包方法 全过程图解指导

vs2008 创建打包安装程序

一、新建一个Windows窗体应用程序,例如项目名为testWindows,功能略。新建的时候不要忘了创建解决方案。二、在testWindows解决方案上“右击”—— “添加”——“新建项目”,选择“其他类型项目”——“安装和部署”——“安装项目”,并命名为“SetupTestWindows”,确定后显示如下图所示 三、添加项目需要文件(包括显示在开始菜单中和桌面上快捷方式的图标、

xocom的专栏 1万+

LiveGBS流媒体平台GB/T28181实战指南:海康NVR物联网卡摄像头注册失败全链路排查与抓包技巧

本文详细解析了LiveGBS流媒体平台中海康NVR物联网卡摄像头注册失败的常见问题及解决方案。通过全链路排查与抓包技巧,包括物联网卡配置、多网卡冲突处理、防火墙设置等,帮助用户快速定位并解决GB/T28181协议下的设备注册难题,提升流媒体平台部署效率。

weixin_29290947的博客 492

Dify插件实战:实时渲染AI生成的HTML/SVG/Canvas代码

在现代Web开发与AI应用集成中,前端渲染技术是实现动态内容展示的核心。其原理在于浏览器引擎解析HTML、CSS、JavaScript等代码,并将其转换为可视化的用户界面。这项技术的价值在于极大提升了开发效率与用户体验,允许开发者快速构建和迭代交互式应用。在AI应用开发领域,尤其是大语言模型(LLM)集成场景,如何将模型生成的**结构化代码**(如描述UI的HTML或数据图表的SVG)实时转化为可视化组件,成为一个关键需求。这直接关系到**Dify**等低代码AI平台能否提供流畅的、所见即所得的交互体验。本

weixin_42545664的博客 499

VS2008 SP1制作安装程序时如何将.Net Framework3.5 SP1打包进去

VS2008 SP1制作安装程序时如何将.Net Framework3.5 SP1打包进去 分类: 技术心得(C#与JAVA) 成功经验 2010-06-03 16:24 2208人阅读 评论(0) 收藏 举报 .netservicec磁盘windows2010 这两天都在弄一个 Windows Setup 项目,希望弄得尽善尽美,直到刚刚终于大功告成,但当我想

hls19880214的专栏 690

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 241

VS2008中的安装部署

VS2008中的安装部署 这两天项目要完成安装部署,用户还要求傻瓜式安装,直接附加数据库。从网上找了些VS2008制作安装部署的方法和附加数据库的方法,自己也从中遇到了些问题,在这和大家分享下。 遇到的问题: 1、应用程序中的文件夹如果希望使用condition...

aopao2793的博客 212

A Side Scan Sonar Image Denoising Algorithm Based on Compound of Fuzzy Weighted Average and Kalman F

Abstract 水下侧扫声纳图像的噪声来源:高斯噪声、脉冲、斑点噪声。 传统方法只能移除部分噪声,并且去噪后容易造成细节模糊。 本文在考虑到噪声的随机性以后,提出一种融合了模糊加权平均和卡尔曼滤波的去噪方法。 在最大化保留图像细节的基础上,同时去除高斯噪声和脉冲噪声 一.Introduction 由于海底环境和声波自身干涉的影响,声纳图像生成的图像难免会有噪点。声纳采集的图像通常会有高斯噪声、脉...

qq_44516871的博客 927

别再只飞不记了!用CsvView分析你的大疆飞行日志,优化航拍与排查炸机原因

本文详细介绍了如何利用CsvView工具分析大疆无人机的飞行日志,帮助用户优化航拍效率和飞行安全。通过解读飞行日志中的关键数据,如电池性能、飞行轨迹等,用户可以及时发现潜在问题并改进飞行习惯。文章还提供了事故排查方法和进阶分析技巧,适合无人机爱好者和专业飞手。

weixin_42535461的博客 549

图解vs2008打包全过程,含卸载功能的介绍

 1:新建安装部署项目打开VS编辑器,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图)本文虽以VS2005打包为例,但是在VS2008下一样也可以用此法,本人已经在VS2008下测试通过。此主题相关图片如下:  2:安装向导关闭后打开安装向导,点击下一步,或者直接点击完成.3:开始制作安装向导完成后即可进

不抛弃,不放弃 5372

Python主要智能优化算法库汇总

最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。 文章目录1、DEAP2、mealpy3、scikit-opt (国产良心)4、Geat2(国产用心)5、pygmo26、pyswarms7、SciPy(想不到吧)小结 1、DEAP 项目地址:https://github.com/DEAP/deap 安装: pip install deap 优点: 起点高,发表在Journal of Machine Learning Rese

半个冯博士 2万+

关于VS2008安装部署的学习

在项目解决方案上单击右键:选择新建项目->其他项目类型->安装项目或安装向导 都可以. 在生成的项目上单击左键 查看属性(这里不是右键查看属性页,而是单击然后查看属性栏里的安装部署属性) 对安装项目属性的设置和使用是对一个安装文件的负责和实现的最好途径 在应用程序文件上单击右键添加文件夹,单击新建的文件夹,然后再右侧空白处单击右键。用来添加对程...

87

UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取

在采用NXOpen C++进行二次开发时,采用Menu/UIStyler是一种很常见的方式,这样可以制作精美的界面,而且常用的块对象也集成了快速编程的代码,我们可以快速的利用这些块来定制我们需要的界面。但是,对于很多初学者可能对选择对象的获取不是很熟悉,我们本文以选择“指定平面”来讲一下如何获取选择的对象和对象的参数。另外,由于我们的UG NX二次开发学习讨论群QQ一群已满,有希望参与学习的有志之士加入我们的QQ二群:683566590。

GimiGimmy 1091

【第一章】基于Simulink的控制器开发教程——目录

摘要:本文系统介绍了基于Simulink的控制器开发方法,涵盖PID、状态反馈、模型预测(MPC)、模糊控制、自适应控制等8类主流控制器。针对每种控制器,详细阐述了其基本原理、适用场景,并通过Simulink建模与仿真测试进行实践验证。文章采用"理论+实践"的结构,从算法设计到硬件实现全流程展开,为汽车、航空航天、工业控制等领域的控制器开发提供完整解决方案,最后通过应用对比与学习总结帮助读者掌握不同控制器的核心特性和应用场景。(149字)

熟悉MATLAB/fpga/RK3588/LABVIEW/protus/单片机/dsp/Multisim 387

怎样制作C#安装程序

近期须要制作一个C#安装。在网上找了一些资料发现都不是非常完整,最后自己综合了一些资料,而且通过亲自检測,最后成功完毕C#打包成安装程序(打包成最简单的一种安装程序。假设须要更高的功能请自己在开发)。详细步骤整理例如以下: 该打包过程在vs2008中完毕,但也适用于vs2005。程序是用C#写的。 1.新建安装和部署。 打开你所写的项目。在解决方式上右键-...

aodiyi6351的博客 288

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: javascript 操作 excel 全攻略
memory_xj
博客等级 码龄24年 44粉丝 23原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值