LGHT0094: неразрешенная ссылка на символ «Компонент: MsiFilesGroup» - PullRequest
1 голос
/ 13 февраля 2020

Мне нужно создать MSI для распространения, старая история, но новая ситуация. Я не использую Visual Studio, только набор инструментов Wix (3.11.2.4516). Мои файлы находятся в папке msi :

MyFolder
|
---msi
|  |
|  ---Sample1.txt
|  |
|  ---Sample2.txt
|
---build.bat
|
---Product.wxs

По сути, я собираю эти файлы из папки msi в msi.wxs :

heat dir msi -cg MsiFilesGroup -dr MsiDir -gg -sfrag -srd -out msi.wxs

и я получаю ComponentGroup с именем MsiFilesGroup . Основная часть (Product.wxs) определяет интерактивный WixUI для руководства пользователя во время установки.

Эти Product.wxs определяют функцию, которая ссылается на вышеуказанные файлы:

<?xml version="1.0" encoding="utf-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="B858BC76-AD11-45c3-A300-D1C6B73DFF56" Name="Pruders" Language="1033" Version="0.0.0.0"
         UpgradeCode="{FA34F953-F659-4633-B8D2-893BF7A63642}" Manufacturer="Microsoft Corporation">
        <Package Description="Test WIXUI_INSTALLDIR" Comments="TestWIXUI_INSTALLDIR" 
            InstallerVersion="200" Compressed="yes" />
        <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
        <Feature Id="TestFileProductFeature" Title="Test File Product Feature" Level="1">
            <ComponentRef Id="MsiFilesGroup" />
        </Feature>
        <Property Id="SQLCLRTYPES">
            <RegistrySearch Id="SqlClrTypesSearch" Root="HKLM" Type="raw"
                        Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
                        Name="KeyName1"/>
        </Property>
        <Property Id="WIXUI_INSTALLDIR" Value="TESTFILEPRODUCTDIR" />
        <Property Id="WixAppFolder" Value="WixPerMachineFolder" />
        <Property Id="buttonGroup" Value="1" />
        <UIRef Id="WixUI_InstallDir" />
    </Product>
</Wix>

Если я использую ComponentRef для ссылок, я получаю эту ошибку:

error LGHT0094 : Unresolved reference to symbol 'Component:MsiFilesGroup' 
    in section 'Product:{B858BC76-AD11-45C3-A300-D1C6B73DFF56}'

Если я использую ComponentGroup , она завершится неудачно следующим образом:

Product.wxs(8) : error CNDL0005 : The Feature element contains an unexpected child element 'ComponentGroup'.
light.exe : error LGHT0103 : The system cannot find the file 'Product.wixobj' with type 'Source'.

Любая подсказка была бы большой помощью.

build.bat содержит вызовы команд Wix, как показано ниже:

@echo off

del *.msi
del *.wix*
del msi.wxs

heat dir msi -cg MsiFilesGroup -dr MsiDir -gg -sfrag -srd -out msi.wxs

candle msi.wxs
candle Product.wxs

light -ext WixUIExtension msi.wixobj Product.wixobj -out Product.msi

1 Ответ

1 голос
/ 13 февраля 2020

Вам не хватает команды light.exe, и есть ряд других вещей, которые вам также нужно настроить.

Вот две слегка измененные и упрощенные партии и источники WiX. Обратите внимание на два *.wixobj файла, поданные в light.exe и -var var.sourcefolder, добавленные туда для установки исходного каталога:

Рекомендуемый "Build.cmd" :

@echo off

heat dir msi -cg MsiFilesGroup -dr INSTALLFOLDER -gg -sfrag -srd -suid -var var.sourcefolder -out msi.wxs

candle -dsourcefolder="msi" msi.wxs >> Build.log
candle Product.wxs >> Build.log

light -ext WixUIExtension Product.wixobj msi.wixobj -out Product.msi >> Build.log

rem pause

Рекомендуемый (упрощенный) "Product.wxs" - Я нахожу, что только набор диалогов Mondo работает «сам по себе» без каких-либо изменений или возни:

<?xml version="1.0" encoding="utf-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="B858BC76-AD11-45c3-A300-D1C6B73DFF56" Name="Pruders" Language="1033" Version="0.0.0.0"
         UpgradeCode="{FA34F953-F659-4633-B8D2-893BF7A63642}" Manufacturer="Microsoft Corporation">
        <Package Description="Test WIXUI_INSTALLDIR" Comments="TestWIXUI_INSTALLDIR" 
            InstallerVersion="200" Compressed="yes" />
        <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />

        <Feature Id="TestFileProductFeature" Title="Test File Product Feature" Level="1">
            <ComponentGroupRef Id="MsiFilesGroup" />
        </Feature>

        <UIRef Id="WixUI_Mondo" />

    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
          <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="Test Folder" />
          </Directory>
        </Directory>
    </Fragment>

</Wix>
...