zoukankan      html  css  js  c++  java
  • 使用msiexec提取msi包里的文件

    核心:如需把d盘下abc.msi文件解包到目录d:abc,操作如下:
    打开命令提示符,输入
    msiexec /a "d:abc.msi" /qb TARGETDIR="D:abc"

    参考:

    在命令行下输入msiexec,不加任何参数,显示msiexec 文档如下

    ------------- msiexec 文档----------------------------------------------------

    Windows (R) Installer. V 4.5.6001.22159

    msiexec /Option <Required Parameter> [Optional Parameter]

    安装选项
    </package | /i> <Product.msi>
    安装或配置产品
    /a <Product.msi>
    管理安装 - 在网络上安装产品
    /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
    公布产品 - m 公布到所有用户,u 公布到当前用户
    </uninstall | /x> <Product.msi | ProductCode>
    卸载产品
    显示选项
    /quiet
    安静模式,无用户交互
    /passive
    无人参与模式 - 只显示进度栏
    /q[n|b|r|f]
    设置用户界面级别
    n - 无用户界面
    b - 基本界面
    r - 精简界面
    f - 完整界面(默认值)
    /help
    帮助信息
    重新启动选项
    /norestart
    安装完成后不重新启动
    /promptrestart
    必要时提示用户重新启动
    /forcerestart
    安装后始终重新启动计算机
    日志选项
    /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
    i - 状态消息
    w - 非致命警告
    e - 所有错误消息
    a - 操作的启动
    r - 操作特定记录
    u - 用户请求
    c - 初始用户界面参数
    m - 内存不足或致命退出信息
    o - 磁盘空间不足消息
    p - 终端属性
    v - 详细输出
    x - 额外调试信息
    + - 扩展到现有日志文件
    ! - 每一行刷新到日志
    * - 记录所有信息,除了 v 和 x 选项
    /log <LogFile>
    与 /l* <LogFile> 相同
    更新选项
    /update <Update1.msp>[;Update2.msp]
    应用更新
    /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
    删除产品的更新
    修复选项
    /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
    修复产品
    p - 仅当文件丢失时
    o - 如果文件丢失或安装了更旧的版本(默认值)
    e - 如果文件丢失或安装了相同或更旧的版本
    d - 如果文件丢失或安装了不同版本
    c - 如果文件丢失或较验和与计算的值不匹配
    a - 强制重新安装所有文件
    u - 所有必要的用户特定注册表项(默认值)
    m - 所有必要的计算机特定注册表项(默认值)
    s - 所有现有的快捷键方式(默认值)
    v - 从源运行并重新缓存本地安装包
    设置公共属性
    [PROPERTY=PropertyValue]

    请查阅 Windows (R) Installer SDK 获得有关
    命令行语法的其他文档。

    版权所有 (C) Microsoft Corporation. 保留所有权利。
    此软件的部分内容系基于 Independent JPEG Group 的工作。

    ===

    出处:http://www.cnblogs.com/top5/archive/2012/10/29/2744639.html

    ==

    一、初识Windows功能增强“插件”MSI 

    我们经常可以看到许多软件只有一个扩展名为MSI的文件,双击这个文件运行,就会出现和Windows应用软件安装非常相似的安装过程,MSI文件到底是什么?为什么许多软件开始用MSI格式来发行呢?请听我慢慢说来。

    1.MSI文件的由来
    说到MSI文件,不得不先说说Windows Installer,它不只是安装程序,而是可扩展的软件管理系统。Windows Installer的用途包括:管理软件的安装、管理软件组件的添加和删除、监视文件的复原以及使用回滚技术维护基本的灾难恢复。另外,Windows Installer还支持从多个源位置安装和运行软件,而且可以由想要安装自定义程序的开发人员自定义。要想使用这些功能,就必须通过MSI文件。MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。MSI文件将程序的组成文件与功能关联起来。此外,它还包含有关安装过程本身的信息:如安装序列、目标文件夹路径、系统依赖项、安装选项和控制安装过程的属性。

    2.MSI的优势
    Windows Installer技术就是合并在一起发挥作用的两个部分:客户端安装程序服务(Msiexec.exe) 和Microsoft软件安装(MSI)软件包文件。

    Msiexec.exe 程序是 Windows Installer 的一个组件。 当 Msiexec.exe 被安装程序调用时,它将用 Msi.dll 读取软件包文件 (.msi)、应用转换文件 (.mst) 并合并由安装程序提供的命令行选项。 Windows Installer 执行所有与安装有关的任务:包括将文件复制到硬盘、修改注册表、创建桌面快捷方式、必要时显示提示对话框以便用户输入安装首选项。

    当双击MSI文件的时候,与之关联的Windows Installer 的一个文件Msiexec.exe 被调用,它将用Msi.dll读取软件包文件(.msi)、应用转换文件(.mst)进行进一步处理,然后 Windows Installer 执行所有与安装有关的任务:包括将文件复制到硬盘、修改注册表、创建桌面快捷方式,必要时显示提示对话框以便用户输入安装需要的信息,就这样,一个程序安装到了你的电脑上。
    采用MSI安装的优势在于你可以随时彻底删除它们,更改安装选项,即使安装中途出现意想不到的错误,一样可以安全地恢复到以前的状态,正是凭着此强大功能,越来越多的软件开始使用MSI作为发行的方式了。 如果你对MSI文件感兴趣,可以用WinRAR等压缩软件打开,看一下里面的内容,满足一下好奇心。

    3、MSI格式文件安装支持程序:WinMe和WinXP对MSI支持得很好,但其他版本的Windows就需要安装一个插件才能使用MSI格式的文件。

    点这里下载InstMsiW插件

    二、定制自己的MSI文件

    前面我们介绍了很多MSI文件的内容,其实MSI并不神秘、复杂,我们自己都能制作,并且制作MSI文件的工具已经在Windows的安装盘上了。

    首先,找到Windows2000的安装光盘,双击下边的这个位置的文件:valueadd3rdpartyMgmtWinstleadmle.msi,

    很快软件就自动安装到了电脑中。在开始菜单的所有程序里边就多了“VERITAS software”组,点击运行里边的“VERITAS discover”就可以开始制作MSI文件了。

    制作MSI文件的基本原理就是,在我们安装一个软件以前,先给电脑的磁盘拍个“快照”。然后将要安装的软件安装到电脑中,并对注册表等内容做修改,等到确认这个软件能正确运行后,再给电脑的磁盘拍个“快照”。Discover软件会自动找出两次“快照”的不同,并且生成一个MSI文件。最后,如果你愿意,可以使用VERITAS software组中的另一个工具:Veritas Software Console对这个MSI文件进行进一步的包装、调整,这样一个MSI文件包就生成了。

    下面,我们具体通过一个例子来介绍一下如何使用Discover生成一个MSI文件,假定我们的软件my的安装过程是:将my.exe文件安装到C:programmeme filesmyprog下,将run.dll放到windowssystem里,在注册表的HKEY_LOCAL_MACHINE的software项中建立一个myprom项,并且在其中添加一个值为OK的value项目。

    第一步:运行Discover,弹出程序界面,可以直接点“Next”按钮继续。

    第二步:在图3的对话框中,首先在第一文本框为你的程序起个名字,比如这里用的“My programmeme”;第二个对话框是输出MSI文件的存放位置和文件名,这里选择保存为E:my_setup.msi;第三个框为压缩包的语言,可以使用其默认值。填好后点“Next”按钮。

    第三步:为Discover存放快照文件选择一个临时的空间,可以选一个磁盘空间比较大的磁盘。

    第四步:在接下来如图4的对话框中要选择Discover需要扫描并拍“快照”的磁盘,你的程序要装到哪个盘就选择哪个盘,并且点一下“Add”按钮加到要扫描文件的列表中,你可以选择几个或者所有的磁盘,不过这样会在扫描的过程中浪费更多的时间,所以应该尽量少选择磁盘。这里只选择C盘,因为我们的软件是装到C盘的。然后点“Next”。

    第五步:在如图5所示的对话框中为上一步选择的每个磁盘选择需要扫描的文件夹或文件,因为我们上一步只选择了C盘,所以为C盘选择就可以了。另外,Discover自动加入了一些特殊的文件和目录,我们可以根据需要决定是否将它们移出要扫描的文件列表,不过最好保留它们。这里我们把“C:programmeme files”和Windows文件夹添进去,先在左边的文件框中点中文件或文件夹,然后点Add按钮就可以了。对于注册表的扫描,Discover为了加快扫描速度,只扫描部分注册表,可以扫描到大部分程序对注册表的修改,如果不放心的话,也可以将下边的“Enhanced Registry Scan”点中,这样速度可能会慢很多,临时文件也大大增加,不过能对注册表所有的改动加以记录。由于我们的软件对注册表只是小改动,所以没必要选择扫描所有注册表。然后点“Next”继续。

    第六步:接下来Discover将对系统进行扫描生成“快照”,要耐心的等待,可能要几分钟的时间才行。

    第七步:在扫描完成后,会弹出一个对话框,大概意思就是告诉你扫描已经完成,问你是否要选择一个程序来运行,从而自动安装你的软件,我们正要制作安装程序,没有程序可运行,所以要点“取消”按钮。

    第八步:接下来,我们就要手动安装自己的软件了,先将my.exe文件拷贝到C:programmeme filesmyprog下,再把run.dll拷贝到windowssystem里,然后用注册表编辑器在注册表的HKEY_LOCAL_MACHINE的software项中建立一个myprom项,并在其中添加一个值为OK的value键。注意,除了这些改动,应尽量避免其他无关的改动。然后我们试着运行一下刚刚安装的my.exe文件,测试一下是否正确安装。

    第九步:确认安装没有问题了,要再次运行Discover程序,这次运行Discover时,出现的是如图6所示的一个界面,有两个选项,第一项是生成安装后的快照,用于与前一次的快照比较生成MSI文件,第二个选项是放弃上一次的扫描,当然要选第一项了,然后点“Next”。这时Discover又开始重新对电脑进行扫描,生成“快照”,并自动生成了安装文件。

    第十步:如果你愿意,可以启动与Discover程序在一起的VERITAS Software console对MSI文件的信息进一步更改,过程比较简单,只要先打开一个MSI文件,然后就可以进行改动了,这里就不介绍了。
    就这样,我们就生成了一个自己的MSI文件了。

    =

    =出处:http://zhidao.baidu.com/link?url=dqvkPStYEcbii6WtQ-GxohRkgrSt5DoMLypDvq8-Q0IkjAGY9CRnzqwWaDxGwiwp4SQnMP4S5bLIHAUd1ea3-q

  • 相关阅读:
    VS调试错误:若要调试此模块,请将其项目生成配置更改为"调试"模式
    Silverlight与常用数据库互操作系列索引
    aspnet在IIS注册
    arcgis server进行查询任务时默认返回最大为500条记录的修改方法
    【转】SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭
    【转】VS2008 使用小技巧 提高编程效率
    【转】C#复制、粘贴文本信息到剪贴板
    【转】使用sp_executesql执行动态SQL语句,同时向里面传入参数。
    【转】ASP.NET弹出对话框后网页变形解决办法
    你应该知道的Virtual Studio 2008
  • 原文地址:https://www.cnblogs.com/mq0036/p/5250355.html
Copyright © 2011-2022 走看看