我有一个安装程序,其中包含正确安装的各个组件中的大量文件。
我现在被告知,只有当这些文件尚不存在且尚未注册时,才需要注册其中一个文件。
我使用heat来为文件生成适当的条目;
<Component Id="AXSListenerdll" Guid="b1f80295-8806-4f6a-bf28-0ee35540317c">
<File Name="AXSListener.dll" KeyPath="yes" Vital="yes">
<TypeLib Id="{CE807033-6BEE-44D3-A86A-E9BC1D0716A4}" Description="AXSListenerLib" Language="0" MajorVersion="1" MinorVersion="0">
<Class Id="{C66BC66D-546E-4E74-A69F-BA97E4117E6B}" Context="InprocServer32" Description="IImplementedAlarmTypesCollection Class" ThreadingModel="both" Programmable="yes">
<ProgId Id="SymEvents.IImplementedAlarmTypesCollection.1" Description="IImplementedAlarmTypesCollection Class">
<ProgId Id="SymEvents.IImplementedAlarmTypesCollection" Description="IImplementedAlarmTypesCollection Class" />
</ProgId>
</Class>
</TypeLib>
</File>
</Component>
我的问题是,如果已经存在并注册了这个特定文件,我该怎么办呢?
我对此有一点心理障碍。
我确定答案必须明显,我只是看不到它!
提前致谢。
答案 0 :(得分:2)
默认情况下,Windows Installer使用文件版本控制来确定是否需要安装/重新安装此文件。例如,如果MSI已安装1.0.0.0版本且1.0.0.0已经存在,那么它将不会重新安装。安装时,它将重新应用DLL的注册表项。
提供给你的要求有点奇怪/错误。它可以被读作好像MSI有文件2.0但1.0已经存在,不安装。这不是一个好的设计,MSI不会这样运作。