1

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

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

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

我的问题是,如果该特定文件已经存在并已注册,我该如何防止它被安装。

我只是对此有点心理障碍。

我敢肯定答案一定很明显,我就是看不到!

提前致谢。

4

1 回答 1

2

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

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

于 2013-03-25T13:44:25.877 回答