1

正しくインストールされる個々のコンポーネントの多数のファイルで構成されるインストーラーがあります。

これらのファイルの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インストーラーはファイルのバージョン管理を使用して、このファイルをインストール/再インストールする必要があるかどうかを判断します。たとえば、MSIにインストールするバージョン1.0.0.0があり、1.0.0.0がすでに存在する場合、MSIは再インストールされません。インストール時に、DLLのレジストリエントリを再適用します。

あなたに提供される要件は少し奇妙/間違っています。MSIにファイル2.0があるかのように読み取ることができますが、1.0はすでに存在しているため、インストールしないでください。これは良い設計ではなく、MSIはそのように動作しません。

于 2013-03-25T13:44:25.877 に答える