安装程序 Repack 攻略 之 MSI 篇

转载 2007年06月26日 11:24:00
安装程序 Repack 攻略 之 MSI 篇

本文主要讨论使用微软的开发工具 orca 和 msidb 进行 MSI 安装包的修改封装.
下面是我对 MSI 的基本情况的认识,如果只想了解怎么进行 Repack,也可以跳过这一部分。

MSI 概述
MSI 最基本的部分是对安装程序的一个描述,包含了一个所谓安装信息数据库,涉及到安装界面、所使用的文件、快捷方式、INI文件、注册表、以及版本控制和反安装信息等。
对于安装时所使用到的文件,MSI 可以有 3 种方式来处理:
文件随同安装程序以原生态发布
文件压缩成 Data.cab 的形式随安装程序发布
文件压缩成 .cab 文件后注入到 .msi 文件中
显而易见,一般安装程序很少以第一种方式发布,而第二种和第三种比较常见。
对于注入到 .msi 文件中的情况,需要首先用 orca 找出 Media 的描述值,然后用 msidb 将 .cab 从 .msi 中抽取出来,如果直接以 Data.cab 形式发布就可以省去这一步操作。
如果要添加移除或是替换 .cab 中的文件,需要先用 orca 找出文件对应的描述值(可能就是文件名本身或是一串HEX编码抑或两者的结合),然后将 .cab 文件解包,按照描述值的文件名来操作文件后再用 cabarc 重新打包回去。
如果 .cab 是从 .msi 抽取的,再用 msidb 重新编入。

显而易见,一般安装程序很少以第一种方式发布,而第二种和第三种比较常见。
对于注入到 .msi 文件中的情况,需要首先用 orca 找出 Media 的描述值,然后用 msidb 将 .cab 从 .msi 中抽取出来,如果直接以 Data.cab 形式发布就可以省去这一步操作。
如果要添加移除或是替换 .cab 中的文件,需要先用 orca 找出文件对应的描述值(可能就是文件名本身或是一串HEX编码抑或两者的结合),然后将 .cab 文件解包,按照描述值的文件名来操作文件后再用 cabarc 重新打包回去。
如果 .cab 是从 .msi 抽取的,再用 msidb 重新编入。
本文以修改 RemotelyAnywhere.msi 为例进行操作说明,目标是用 RemotelyAnywhere 补丁替换安装包中的原文件,同时将购买的许可协议集成在安装包内,达到安装完毕后直接可以使用的效果:
1. 使用 orca 打开 RemotelyAnywhere.msi ,选择 TOOLS 菜单的 OPTIONS 命令,切换到 DATABASE 面板,勾
选“Generate a unique Package Code each time a database is saved”,然后执行 File 菜单的 Save as 命令,把 RemotelyAnywhere.msi 文件另存为 ra.msi 文件。
2. 使用 orca 打开 ra.msi ,在左侧 Tables 中选择 Media ,在右侧 Cabinet 列可以看到压缩包名称为 #data.cab ,记下,关闭 orca。
3. 使用 msidb 从 ra.msi 中提取 data.cab:

CODE:
msidb.exe -x data.cab -d ra.msi


4. 将 data.cab 中的文件展开:

CODE:
·建立 files 目录
md files
·展开文件到 files
expand data.cab -F:* files
·删除 data.cab


5. 将补丁文件 RemotelyAnywhere.exe 复制到 files 目录中覆盖原文件。
6. 将文件重新打包成 data.cab :

CODE:
cabarc.exe -m LZX:21 -r N data.cab "files/*"


7. 将 data.cab 编入 ra.msi 中:

CODE:
msidb.exe -a data.cab -d ra.msi


8. 使用 orca 打开 ra.msi ,在左侧 Tables 中选择 Registry ,在右侧工作区点右键,选择 Add Row,按以下内容输入各列:

CODE:
[Registry]  REGISTRY_LICENSE
[Root]      2
[Key]       Software/RemotelyAnywhere/V5
[Name]      License
[Value]     -----BEGIN LICENSE-----
PRODUCT           RemotelyAnywhere...
[Component] Service_Files


这里是自己的编撰了一个注册表项用于安装时自动输入许可文件,Value 栏的内容就按你购买的 License 的内容输入即可。
9. 使用 orca 保存完成后的 MSI,收工。
PS: 本文中因为只涉及替换文件,所以没提及增减文件的操作,如果有需要这方面的操作,首先应在操作 cab 包时增减文件,并用 orca 打开 msi 文件对以下数据表项进行调整:FeatureComponents、File,具体操作在此不赘述,遇到具体案例时可以联系我,到时根据实战再修改此贴。
TIPS: 如果安装程序是由 Setup.exe Data1.cab 等一系列文件组成的,你还可以使用 InstallShield 的 Pakage For The Web 来将其打包成单个文件,同样,如果原始安装程序是 InstallShield 制作的单个文件,不妨试一试用右键打开,WinRAR 可以将其解压还原出多个文件。
文中提及的工具:CabArc
                      msidb
                      orca
 

安装程序 Repack 攻略 之 MSI 篇(IS版)

本文主要讨论使用 InstallShield 进行 MSI 安装包的修改封装,要查看如何使用微软提供的开发工具进行此操作,请查看此贴: 【原创】安装程序 Repack 攻略 之 MSI 篇(MS...
  • guoduhua
  • guoduhua
  • 2013年04月09日 16:22
  • 821

安装程序Repack攻略之MSI篇

  引用http://mt25cyb.bokee.com/3924236.html 本文主要讨论使用微软的开发工具 orca 和 msidb 进行 MSI 安装包的修改封装.下面是我对 MSI 的基本...
  • hollson
  • hollson
  • 2006年08月15日 09:42
  • 996

安装程序 Repack 攻略 之 MSI 篇(MS版)

本文主要讨论使用微软的开发工具 orca 和 msidb 进行 MSI 安装包的修改封装,要查看如何使用 InstallShield 进行此操作,请查看此贴: 【原创】安装程序 Repack ...
  • guoduhua
  • guoduhua
  • 2013年04月09日 16:18
  • 894

安装程序 Repack 攻略 之 CAB 篇

某些情况下我们需要对软件的安装程序包进行修改,替换其中的部分文件,也就是所谓 Repack。 本文讨论采用.CAB压缩包的安装程序的拆解打包,主要是搜集工具,使用方法除了Install Shie...
  • guoduhua
  • guoduhua
  • 2013年04月09日 15:56
  • 911

msi安装程序安装参数

Windows (R) Installer. V 3.01.4000.1830 msiexec /Option [Optional Parameter]安装选项    安装或配置产品 /a   管理...
  • naive1010
  • naive1010
  • 2007年10月03日 08:02
  • 2919

自定义msi安装包的执行过程

有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程。...
  • powertoolsteam
  • powertoolsteam
  • 2016年03月24日 16:07
  • 2651

完美攻略之风之继承者(风の继承者)中日文双语攻略

完美攻略之风之继承者(风の继承者,successor of wind)中日文双语攻略下载风之继承者全结局全CG全过程存档  前言: 攻略可能在个别词语上与游戏中有点差别,但是请放心,主要意思没有变,顶...
  • luozhuang
  • luozhuang
  • 2008年03月29日 22:30
  • 15178

OCX控件MSI打包升级方案

 OCX:OCX称为对象类别扩充组件(Object Linking and Embedding (OLE) Control eXtension); MSI:MSI文件是Windows Inst...
  • jfx
  • jfx
  • 2015年12月29日 16:48
  • 675

python生成安装文件 msi

①.需要在目录下面创建一个文件 。setup.py ②.写入代码: import sys from cx_Freeze import setup, Executable import os o...
  • j2melqr
  • j2melqr
  • 2017年12月17日 00:06
  • 135

安装程序命令行选项和属性 - Setup.exe及*.MSI

安装程序命令行选项和属性 当运行安装程序时,可使用命令行选项更改安装程序用于安装应用程序的某些参数,例如安装程序属性的显示设置和默认值。 安装程序和 Windows 安装程序使用属性来控制应用程序安装...
  • ecrown
  • ecrown
  • 2005年04月23日 08:37
  • 8184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安装程序 Repack 攻略 之 MSI 篇
举报原因:
原因补充:

(最多只允许输入30个字)