Nov 162008
 

Windows Live一系列的桌面产品我一直在用,最常用的就是Messenger和Writer了。然而不知从哪个版本起,微软开始使用一体化安装包,而不是单个产品有单个产品的安装包。本来这也没什么不便,可是不知道哪个兄弟脑袋长包,在一体化安装包里做上了操作系统检测,如果发现是在Windows Server家族操作系统上,或者是在64位系统上,直接弹出个框来说不允许安装。而实际上,套件里每个产品都可以在Server或64位系统下运行。

我个人有拿Server系统当Workstation来使的坏习惯(反正免费),最近还染上了没事玩64位的更坏的习惯,因此几乎每次装系统都碰上这个事,确实很让人恼火。

以前的解决办法是使用早期的还没有发布一体安装包时的版本,然后让其自动Update,现在因为不少次的大版本升级,自动更新无法跳大版本,于是就自己Rip MSI。简单来说就是一体化安装包在安装过程会将实际产品的MSI释放出来,所以只要找个32位XP或Vista的机器运行一下一体包,中途将释放的MSI拿出来就行了。这办法麻烦是麻烦了点,不过却一直好用,直到最新的Wave 3 beta也还一直能用,目前安装包将MSI释放的位置是%ProgramFiles%\Common Files\Windows Live\.cache

不过最近出了种简单点的方法,就是直接修改EXE文件将操作系统检测机制给强行弄掉,这样直接运行修改后的一体安装包就完全没有问题了,不管是服务器系统还是64位系统都能照装不误。方法如下:

找一个趁手的能修改EXE资源的工具,例如是Resource Hack。

用它打开一体包,无论是在线安装包还是完全离线安装包都可以。

找到CONFIG –> CONFIG0

里面有一段,如下:

<rule name=”IsValidOs” logic=”or”><group logic=”and” name=”vista+”><os version=”vista” condition=”greaterthanorequal” /><os productType=”workstation” /></group><group logic=”and” name=”xpsp2″><os version=”xp” servicePack=”2″ condition=”greaterthanorequal” /><os version=”vista” condition=”lessthan” /><os productType=”workstation” /><os cpu=”i386″ /><fileVersion path=”CSIDL_SYSTEM” file=”msi.dll” version=”3.1.0.0″ condition=”greaterthanorequal” /></group></rule>

 

直接把这段删除掉,然后将修改好的资源编译保存。

这样经过爆破的安装包就不会再有烦人的系统类型检测了。目前在我的Windows Server 7 X64(为啥不是Windows Server 2008 R2呢)下运行良好。

由于是将已有版权的软件产品进行未授权修改,私自发布应该算违法了,所以伸手党们恐怕要失望了,好在不很麻烦,有和我同样需求的同学们就自己照着玩玩看吧。

Update: Web 安装版似乎不可以Hack了,会导致数字签名失败而无法安装。所以只能Hack离线安装包了。

 Posted by at 12:14 am

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>