Почему мой MSI не будет собираться, когда я добавлю этот модуль слияния?
Это компилирует:
Product.wxs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="..." Language="1033" Version="..." Manufacturer="..." UpgradeCode="...">
<!-- omitted -->
<Feature Id="FeatureOPC" Title="Support for OPC Components" Level="10">
<!-- omitted -->
<!-- <MergeRef Id="OPCLDSRedist"/> -->
</Feature>
<!-- omitted -->
</Product>
<!-- omitted -->
</Wix>
OPC.wxs
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<!-- omitted -->
<!-- <Merge Id="OPCLDSRedist" SourceFile="OPC_UA_Local_Discovery_Server_1.03.msm" DiskId="1" Language="1033"/> -->
</DirectoryRef>
<!-- omitted -->
</Fragment>
</Wix>
Это не компилируется (две строки без комментариев):
Product.wxs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="..." Language="1033" Version="..." Manufacturer="..." UpgradeCode="...">
<!-- omitted -->
<Feature Id="FeatureOPC" Title="Support for OPC Components" Level="10">
<!-- omitted -->
<MergeRef Id="OPCLDSRedist"/>
</Feature>
<!-- omitted -->
</Product>
<!-- omitted -->
</Wix>
OPC.wxs
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<!-- omitted -->
<Merge Id="OPCLDSRedist" SourceFile="OPC_UA_Local_Discovery_Server_1.03.msm" DiskId="1" Language="1033"/>
</DirectoryRef>
<!-- omitted -->
</Fragment>
</Wix>
Я получаю это предупреждение:
Таблица Directory содержит строку с первичным ключом (ключами) 'ProgramFilesFolder', который нельзя объединить из модуля слияния 'OPC_UA_Local_Discovery_Server_1.03.msm'. Это, вероятно, связано со столкновением строк с одинаковым первичным ключом (ключами) (но с другими различными значениями в других столбцах) между базой данных и модулем слияния.
Я нашел это, у которого нет разрешения.
Я получаю эти ошибки:
ICE57: Компонент 'OnlineDocumentationShortcut.4E6EDC62C0B245CF831D3C5D4806F990' содержит данные как для пользователя, так и для компьютера с KeyPath для каждого компьютера.
Я нашел этот вопрос. Это устанавливает для каждой машины. Похоже, мне нужно это "исправить". Но это часть модуля слияния.
ICE27: Действие: "InstallFiles" в таблице InstallExecuteSequence должно предшествовать действию "SelfRegModules".
Я нашел эту ссылку. Там не было никакого решения.
ICE27: Действие: "SelfUnregModules" в таблице InstallExecuteSequence должно следовать за действием "InstallValidate".
То же, что и выше.
ICE64: каталог newfolder1.4E6EDC62C0B245CF831D3C5D4806F990 находится в профиле пользователя, но не указан в таблице RemoveFile.
Я нашел этот вопрос. Тем не менее <RemoveFolder/>
Элемент, вероятно, является частью модуля слияния.
ICE64: каталог newfolder2.4E6EDC62C0B245CF831D3C5D4806F990 находится в профиле пользователя, но не указан в таблице RemoveFile.
То же, что и выше.
ICE64: каталог newfolder3.4E6EDC62C0B245CF831D3C5D4806F990 находится в профиле пользователя, но не указан в таблице RemoveFile.
То же, что и выше.
ICE43: у компонента OnlineDocumentationShortcut.4E6EDC62C0B245CF831D3C5D4806F990 есть не объявленные ярлыки. Он должен использовать ключ реестра в HKCU в качестве KeyPath, а не файл.
Я нашел несколько результатов в Google, но не нашел их полезными.
ICE27: действие "SelfUnregModules" в таблице InstallExecuteSequence находится в неправильном месте. Текущий: Выбор, Правильный: Выполнение
Я нашел [this](Действие в таблице InstallExecuteSequence в неправильном месте. Current: Selection, Correct: Execution), в котором говорится, что не используются модули слияния. Объединять модули проще, чем загрузчик, так что это не является предпочтительным.
ICE27: Действие: "SelfUnregModules" в таблице InstallExecuteSequence должно следовать после действия "InstallInitialize".
То же, что и выше.
OPC_UA_Local_Discovery_Server_1.03.msm происходит от "1.03.371 модуля слияния локального сервера обнаружения (LDS)" здесь: https://opcfoundation.org/developer-tools/developer-kits-unified-architecture/local-discovery-server-lds/
Как мне включить OPC_UA_Local_Discovery_Server_1.03.msm в мой установщик?