请教VS2013 INSTALLSHIELD生成msiVS中如何获取文件路径的问题

    上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结。程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具。不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的。
    经过翻阅资料发现,VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软提供的呢?因为最原始的也是最高级的,万变不离其宗。     上篇博客稍微总结了下.NET程序的编译机制,下面了解些有关程序部署的一些机制。在.NET程序包下有三个文件夹分别是bin文件、obj文件、My Project文件,他们分别封存着程序的组成部分。
 bin目录用来存放程序的编译结果,它有DebugRelease两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,在编译后生成的程序文件会存放在该目录下。当然我们也可以手动修改程序的输出路径,修改方法:项目属性—>配置属性—>输出路径来修改。
 obj目录是用来保存每个模块的编译结果,用来放置程序生成时的中间文件。程序不会直接生成出可用的文件,而是由源程序生成中间文件,再编译中间文件生成可执行文件的。在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。
    My Project目录定义你程序集的属性,被称为项目属性文件夹。目录下的AssemblyInfo类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。
    在程序编译生成后,程序的源文件就不在重要了,重要的是DLL、EXE、Config等的程序的组件,有了程序的组件程序就能够正常运行。所以在发布制作安装程序时我们只需要将程序的组件打包即可。     VS2012中打包工具被看做程序集,在使用时和程序集一样被创建到程序解决方案下。需要我们做的是添加项目即可。但是对于初次使用的朋友来说,我们需要根据提示一步步的先下载安装该打包工具。具体的安装方法不再详述,网上资料很多 。

    在继续往下操作前一定要选择发布,在启动项目的属性内设置发布文件夹默认路径设置为安装系统的文件夹。

  3、设置程序安装信息

    Application Information主要设置程序在安装时显示的有关程序的一些信息,如:程序的开发者、程序开发公司,程序安装图标和程序简介等。

    在下图中的第四步中添加程序文件时会有主输出、源文件等多个选项框,其实它的生成机制和.NET程序的编译机制是相同的。下图中的第五部显示出的环境或者其它程序运行所需要的Windows环境,Install也为我们很好的设计了环境的打包。

    在选择需要打包的环境时一定要注意文件的名称,一般往往是需要直接将环境安装包放到安装exe中这时我们要选择名称为Client的文件,如我想要将.NET Framework Framework 4.0 Clinet然后等待Vs将该环境的安装包下载到程序集文件夹中即可。另外一定要注意名称后面的(Web Download)括号的内容说明文件只是一个链接,在安装时需要网络下载才可以实现完成安装。

           上面的安装步骤执行完成后即可生成解决方案,但是生成的文件会放在DVD-5文件夹内,想要使用安装文件的话就必须拷贝整个文件夹否则安装会出错,这样内容很繁琐,而且给客户的安装体验度也很差,那应该有其它的解决办法吧,是的,如下图所示,我们将使用SingleImage的安装包,将所有文件集成到一个Setup.exe中,再次安装的时候只需要一个Setup.exe即可。

           如果我们的安装文件内没有打包程序运行环境那上面的操作步骤就完全可以满足只需要一个Setup.exe即可的要求了,但如果需要将安装环境打包到Setup.exe中的话还必须要经过下图的步骤。

      好了设置完成后,接下来就是生成解决方案了或者是只生成单个程序集,这时候安装文件就只有一个setup.exe了,如下图。

操作完上述步骤后,程序打包基本设置已经完成,接下来要做的就是生成解决方案。生成解决方案后会在安装程序集下面生成一个名为Setup的文件夹,安装文件就保存在下面的目录中。Install在生成安装文件后会有Setup.exe和.msi两中安装文件,exe文件是安装的引导文件,核心文件是msi文件,里面封存了程序的组件。在里面找到Setup.exe文件及msi文件即可进行安装。

    最后还要强调一点,Install打包工具中并没有继承中文环境,在它的底层语言库中没有中文语言,所以解决方案、程序集名称等涉及到与主输出相关的文件最好不要以中文名命名,否则会出现如下的错误:“ -7184: The FileName column of the File

    万变不离其宗,微软的Install程序打包工具虽然使用时较繁琐,但原始的就是最高级的,其它的打包工具和它相比也差不到哪儿去。

打包的时候,经常需要安装一些其它的环境库,而又不想让用户繁锁的去选择,这时就需要静默安装,而不同的文件所加的参数了不一致,比如VS的环境库vcredist_x86.exe(这是32位的环境库)后面加/q即可完成静默安装,而NSIS打包的文件使用/q是不行的,查了相关的资料得使用/S(这里要大写),其它格式的文件参考下面的转载内容:

软件的安装采取全自动或半自动的方式进行。

  如果某个软件是用 Windows Installer 打包的,那你就应该能在文件夹中看到 *.msi 文件。这是最典型的特征,这些文件通常可以使用 /QB 和 /QN 参数进行自动安装。

  /qb 会在窗口中显示一个基本的安装进程。
  /qn 参数则不会显示任何窗口,直接在后台自动安装。

  有两种情况,一种是类似IE增量补丁包的那种安装文件,要使之静默安装,只需要在执行文件后加上 /q:a /r:n 参数即可;一种是 Windows 常用的补丁文件,一般情况下加上 /U /N /Z 即可实现静默安装。(对于新的系统补丁,也可使用 /passive /norestart)。这通用大部分情况,但某些特定的补丁不能用此法进行静默安装。

  1、要使用静默安装的方式安装用InstallShield技术打包的程序,首先要在现有的操作系统中创建一个setup.iss文件。在命令行窗口中使用 -R 参数(大小写敏感)运行安装程序。

  2、接着会显示常见的安装屏幕,并且询问你一些问题,例如要安装的目录等有一点是很重要的,在安装结束后你不能选择“立刻重启动计算机”的选项。如果你选了,在批处理文件中的其他命令就会因为计算机重启动而无法执行。

  3、在安装程序运行完毕后,打开你的 C:\Windows(或者C:\WINNT)目录,然后找到 setup.iss 文件,把这个文件和你将要静默安装的程序 setup.exe 保存在同一个目录中。

  说明:怎么知道哪个程序是使用InstallShield技术打包的?

  大部分这类程序的安装文件都可以被压缩软件解压缩,安装文件 setup.exe 的属性对话框中应该有“InstallShield (R) Setup Launcher”或者其他类似的字样。

  最后,如果你在保存安装文件的文件夹中看到了一个 setup.iss 文件,那么毫无疑问这是用 InstallShield 打包了!

  用WISE技术打包的软件在安装的时候可以选择使用 /s 参数进行自动安装。

  说明:怎么知道哪个安装程序是用Inno 技术打包的?

  这种软件在安装时出现的第一个界面,在窗口标题栏左侧的图标上点击鼠标左键,然后再探出菜单上点击“About Setup”可以看见安装类型。

  使用 NSIS(NullSoft Installation System)制作的安装文件,可用 /S (注意大写)来进行静默安装(“S”是大小写敏感的)。

  也可以用 /D参数选择将要安装的目标分区和文件夹:

  像Winamp 和CDex这类的软件都会在安装结束后显示一个确认屏幕(CDex)或者一个设置文件关联方式的结束安装屏幕(Winamp)

  说明:怎么知道哪个程序是使用NSIS技术打包的?

  很多用NSIS打包的程序在安装的时候都有类似的窗口,例如Winamp 和CDex。

  制作的安装文件,可用 /silent 参数进行静默安装

无人值守安装光盘最有魅力的地方之一


就是在安装过程中可以静默安装好预先设计集成的一些常用软件,安装结束以后软件就已经可以使用
但是很多朋友发现每个软件以及系统补丁,它们的静默安装参数是不一样的
在本文就和广大爱好者一起研究一下几种常见软件封包形式的静默安装方式
如有遗漏和错误之处,请指出,大家互相交流!


使用Inno技术制成的程序安装包可以使用/SILENT 和 /VERYSILENT参数进行静默安装
我不知道这两个参数有什么分别,因为它们实现的功能看上去是一样的

你会看到一个对话框,询问你是否打算继续安装:

我们可以通过使用一个参数跳过这个对话框:

有些利用Inno 技术做作的安装包会在程序安装完毕后自动运行所安装的程序,例如ISOBuster
不过我们可以使用一个叫做Taskkill的系统自带工具杀死相关的进程。

以下是一个可以用于批处理文件安装由Inno打包的软件的命令的示例:

我怎么知道哪个安装程序是用Inno 技术打包的?

这种软件安装时第一个界面一般如下图所示
在窗口标题栏左侧的图标上点击鼠标左键
然后再探出菜单上点击“About Setup”也可以看见安装类型

要使用静默安装的方式安装用InstallShield技术打包的程序


你首先要在现有的操作系统中创建一个setup.iss文件。

1. 在命令行窗口中使用 -R 参数(大小写敏感)运行安装程序。

2. 接着会显示常见的安装屏幕,并且询问你一些问题,例如要安装的目录等
有一点是很重要的,在安装结束后你不能选择“立刻重启动计算机”的选项
如果你选了,在批处理文件中的其他命令就会因为计算机重启动而无法执行

3. 在安装程序运行完毕后,打开你的C:Windows (或者C:WINNT)目录
然后找到setup.iss文件,把这个文件和你将要静默安装的程序setup.exe保存在同一个目录中

4. 用以下命令进行静默安装:

5. 对所有准备进行静默安装,并且使用了InstallShield技术打包的程序重复上面的步骤操作

如果从光盘上直接执行RunOnceEx,用Installshield打包的应用程序安装将会失败
除非你指定了用于保存日至文件的位置
下面就有一个示例,你可以将这个例子用于你自己的程序的安装(粗体字部分看仔细了):

我怎么知道哪个程序是使用InstallShield技术打包的?
大部分这类程序的安装文件都可以被压缩软件解压缩,安装文件setup.exe的属性对话框中应该有“InstallShield (R) Setup Launcher”或者

最后,如果你在保存安装文件的文件夹中看到了一个setup.iss文件,


使用NSIS 打包的安装文件可以用 /S参数进行自动安装(“S”是大小写敏感的):

你也可以用 /D参数选择将要安装的目标分区和文件夹:

像Winamp 和CDex这类的软件都会在安装结束后显示一个确认屏幕(CDex)
或者一个设置文件关联方式的结束安装屏幕(Winamp)
我还不知道怎样跳过这一步,但是这个屏幕对批处理文件的继续执行不会有任何影响


我怎么知道哪个程序是使用NSIS技术打包的?


很多用NSIS打包的程序在安装的时候都有类似这样的窗口,例如Winamp 和CDex:


如果某个软件是用Windows Installer打包的,那你就应该能在文件夹中看到*.msi文件。
这些文件通常可以使用 /QB和 /QN参数进行自动安装。
Powertoys使用了 /s /v/qn参数,对于这些软件,你可以依次尝试上面提到的参数

/qb 会在窗口中显示一个基本的安装进程
/qn 参数则不会显示任何窗口,直接在后台自动安装

阻止程序安装完成后自动重启动:

有些安装程序使用 /s/v/qn参数进行自动安装,因此阻止它们重启动应该用:


用WISE技术打包的软件在安装的时候可以选择使用 /s参数进行自动安装:

我怎么知道哪些程序是使用Wise技术打包的?

使用Wise技术打包的大部分程序都会在开始运行的时候显示一个启动界面:


但是也有一些会最小化这个窗口,只显示一个深蓝色的背景,还有安装窗口在屏幕的中央.


源码和制作工具在文章最下边

新建一个Window窗体控件库项目

点击事件里我们只弹出一个MesageBox

IE怎么知道一个插件是脚本安全的?它是通过以下两个办法。一是查询ActiveX组件是否实现了IObjectSafety接口,并且

接口格式是固定的不要修改

在UserControl1控件的后台代码我们要实现这个接口

 

在应用程序里 点击程序集信息 勾选 使程序集COM可见

在生成里边,勾选  为Com互操作注册

做到这里我们的ActiveX控件就做完了接下来我们把它发布

Vs2012 打包我之前有些不同

新项目——其他项目 安装和部署

因为我们的demo就一个dll所以不用再有别的操作

还要一个cabarc.exe这个我会在下载里给大家提供

运行一下bat就可以生成一个

我们随便建一个webfrom网站

在debug下边建一下dll文件夹

我要回帖

更多关于 msi季中赛rngVSKZ 的文章

 

随机推荐