如何:在执行安装时检查文件的版本号

如何:在执行安装时检查文件的版本号

安装包在安装过程中经常需要检查磁盘上某个文件的版本号。 这种检查通常是通过在安装过程中通过高级条件语句来进行,比如当文件缺失的时候中断用户安装,或者根据文件版本是否足够高来显示一个自定义界面。这里的示例演示如何验证磁盘上的文件,并且如果版本低于期望值则根据验证结果中断安装程序。

第一步:检查文件版本

文件版本需要由<Property>、<DirectorySearch>、<FileSearch>元素来测定。下面片段的作用是找到目标机器System32文件夹下的user32.dll文件,并且检查它是否至少达到6.0.6001.1751版本。

<Property Id="USER32VERSION">
    <
DirectorySearch Id="SystemFolderDriverVersion" Path="[SystemFolder]">
        <
FileSearch Name="user32.dll" MinVersion="6.0.6001.1750"/>
    </
DirectorySearch>
</
Property>

要寻检查文件首先要描述需要寻找的文件所在的文件夹,然后指定该文件夹下需要检查的文件。

Property的ID元素决定了检查文件的结果。这个ID会在稍后的WiX工程中使用,比如在Condition中。DirectorySearch元素用来为检查文件建立树形目录。这里赋予了DirectorySearch一个唯一的ID,并且将Path属性设置为Windows Installer预定义的SystemFolder Property使其指向用户的Windows\System32 文件夹。FileSearch元素通过Name指定了父DirectorySearch中要检查的文件的文件名。MinVersion属性指定找到文件的最小版本号。

如果检查成功则ID为USER32VERSION的Property将被赋值为user32.dll文件的完全路径。

注意: 当做一个本地(locale-neutral )文件检查的时候,你需要将MinVersion属性设置为一个比实际需要检查的文件版本更低的版本。本例中,我们希望找到的版本是6.0.6001.1751,所以MinVersion属性被设置为6.0.6001.1750。这是根据Windows Installer匹配文件的机制设置的。点击获取 更多信息 关于 Windows Installer 文档。

第二步:在Condition中使用Property

当你检测到了文件是否存在并且符合版本条件的时候,你就可以在Condition中使用Property了。下面的例子是在检测到user32.dll文件版本太低的时候中断安装。

<Condition Message="The installed version of user32.dll is not high enough to support this installer.">
    <![CDATA[
Installed OR USER32VERSION]]>
</
Condition>

Installed 是一个Windows Installer 预定义Property,其作用是确保该检测只在安装的时候做,修复或者删除的时候则不做。 当USER32VERSION部分被设置为任意值的时候,检查将通过,而没有设置任何值的时候,检测将失败。第一步中的文件检查如果找到了文件并且文件版本符合要求,这个属性将设置为user32.dll文件的完全路径,否则将不会设置它。

posted on 2010-10-02 15:12  nGn  阅读(1028)  评论(0编辑  收藏  举报