Попытка использовать EnsureTable в Wix для исправления ошибок валидации

StackOverflow https://stackoverflow.com/questions/461907

Вопрос

Я обнаружил множество ошибок в Wix 3.0, когда попытался использовать модуль слияния msvbvm60.msm:

C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Registry Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Root Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Key Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Name Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Value Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Component_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Extension Column: Extension Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Extension Column: Component_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Extension Column: ProgId_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Extension Column: MIME_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Extension Column: Feature_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: MIME Column: ContentType Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: MIME Column: Extension_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: MIME Column: CLSID Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: CLSID Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Context Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Component_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: ProgId_Default Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Description Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: AppId_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: FileTypeMask Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Icon_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: IconIndex Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: DefInprocHandler Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Argument Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Feature_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Class Column: Attributes Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: ProgId Column: ProgId Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: ProgId Column: ProgId_Parent Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: ProgId Column: Class_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: ProgId Column: Description Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: ProgId Column: Icon_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: ProgId Column: IconIndex Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Verb Column: Extension_ Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Verb Column: Verb Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Verb Column: Sequence Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Verb Column: Command Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Verb Column: Argument Missing specifications in _Validation Table (or Old Database)

Я где-то читал, что могу использовать EnsureTable, чтобы исправить это, поэтому в качестве теста я попытался добавить <EnsureTable Id="Key" /> в Product. Это вызвало у меня ошибку:

C: \ Users ... (28): ошибка LGHT0094: неразрешенная ссылка на символ 'WixCustomTable: Key' в разделе 'Product: [GUID]'.

Любой совет?

Это было полезно?

Решение

EnsureTable / @ Id должен ссылаться на таблицу, которую вы хотите получить. В вашем случае вам нужно:

<EnsureTable Id="Registry"/>
<EnsureTable Id="Extension"/>
<EnsureTable Id="MIME"/>

и так далее. Это обеспечивает то, что набор инструментов WiX извлекает в своем определении таблиц with соответствующие записи таблицы _Validation, прежде чем модуль слияния введет свои определения таблиц без записей таблицы _Validation.

PS: Основная причина в том, что используемый вами модуль слияния не построен по спецификации. Вы можете уведомить людей, у которых вы приобрели модуль слияния, из-за того, что они производят ненужные вещи (да, я ценю, что это, вероятно, Microsoft).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top