2010-04-26 225 views
2

我们有一个安装项目,它可以生成一个未压缩的MSI文件,并且完全不需要Setup.exe,以后由NSIS进行压缩。
在特殊的构建设置中,我想在MSIS包装之前复制该MSI,更改副本并保留它。我还想在msbuild创建后压缩它。
有没有一种简单的方法(某种类型的命令行工具,也许?)我可以用它来压缩已经创建的msi文件?压缩未压缩的MSI文件

回答

2

是的!请参阅Windows SDK :)

有大量示例脚本显示如何使用Windows Installer API处理MSI文件。

MSI文件本身从未实际压缩过,但它可以包含可能被压缩的嵌入式CAB文件。

我建议把一些脚本从MSI中提取任何嵌入式CAB文件,一次解压缩到一个临时文件夹,使用更好的压缩方法重新压缩,然后用MSI中的非压缩CAB替换新压缩的一个。

任何工具,你可以找到会做我上面提到的到底是什么,但是把它一起自己应该提供的微星是如何工作有了更深的了解:)

+0

谢谢。听起来像是一个好主意,我会研究提取驾驶室 - >压缩驾驶室 - >推动驾驶室。 – 2010-04-29 04:39:25

0

未压缩转换微星压缩。

  1. 执行msi的管理员安装。
  2. 使用补丁来传递你想要的补丁文件。
  3. 将WiFilVer.vbs和WiMakeCab.vbs文件从"C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\msi\scripts"复制到admin安装文件夹。
  4. 要更新文件与新的运行:CScript //nologo WiFilVer.vbs vendormsi.msi /U
  5. 要创建CAB文件并将其嵌入到微星:cscript /nologo WiMakCab.vbs eTalk.msi Data1 /R /L /C /U /E /S
  6. 如果你没有得到5步CAB文件检查你的媒体表中的Orca并看看:“http://www.spinnersoftware.com/kb/en/msi/createmsi.html”寻找压缩部分。
  7. 您现在应该拥有包含所有内容的msi。

压缩一个MSI与内部或外部CAB文件

  1. 执行MSI的管理员安装。
  2. 使用补丁来传递你想要的补丁文件。
  3. 将WiMakeCab.vbs文件从Windows SDK复制到admin安装文件夹。
  4. 运行:cscript WiMakCab.vbs Vendor.msi Data1/L/C/U/E
  5. 您应该拥有带嵌入式cab文件的MSI。