WIX安装程序 - 如果已经安装和/或注册,则阻止安装和注册dll

时间:2013-03-25 13:25:38

标签: wix windows-installer

我有一个安装程序,其中包含正确安装的各个组件中的大量文件。

我现在被告知,只有当这些文件尚不存在且尚未注册时,才需要注册其中一个文件。

我使用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>

我的问题是,如果已经存在并注册了这个特定文件,我该怎么办呢?

我对此有一点心理障碍。

我确定答案必须明显,我只是看不到它!

提前致谢。

1 个答案:

答案 0 :(得分:2)

默认情况下,Windows Installer使用文件版本控制来确定是否需要安装/重新安装此文件。例如,如果MSI已安装1.0.0.0版本且1.0.0.0已经存在,那么它将不会重新安装。安装时,它将重新应用DLL的注册表项。

提供给你的要求有点奇怪/错误。它可以被读作好像MSI有文件2.0但1.0已经存在,不安装。这不是一个好的设计,MSI不会这样运作。