2016-05-20 2 views
0

Я определил пользовательский элемент пользовательского интерфейса в отдельном файле UserRegDialog.wxs, чтобы сделать вещи немного более модульными.Ссылка на элемент пользовательского интерфейса из другого .wxs-файла

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
    <UI Id="MyUserRegDialogUI" > 

     <Property Id="Proceed">proceedbtn</Property> 
     <Binary Id="proceedbtn" SourceFile="images/proceedbtn.bmp"/> 
     <Binary Id="headerPic" SourceFile="images/header.bmp"/> 
... 
    </UI> </Fragment> 

Затем в моей основной Product.wxs, я пытаюсь ссылаться на элемент пользовательского интерфейса я определил:

<Product Id="*" Name="CRxGUI" Language="1033" Version="1.0.0.0" Manufacturer="Derp LLC" UpgradeCode="bfcd8325-0025-463a-9589-c4c4713ce11d"> 
     <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" Description="My GUI Installer" /> 

     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate /> 

    <UI> 
     <UIRef Id="WixUI_InstallDir" /> 
     <UIRef Id="MyUserRegDialogUI" /> 
... 

Но, то Wix строитель сообщает об ошибке, что он не может быть найден , С .wxi-файлами, я просто поместил их в <?include myfile.wxi ?>, но это, похоже, не работает с другими .wxs-файлами. Что я делаю не так? Как я могу ссылаться на свой пользовательский диалог из другого файла?

Error 52 Unresolved reference to symbol 'WixUI:MyUserRegDialogUI' in section 'Product:*'. ....\Product.wxs 13 1 MyWiXInstaller 

Я попытался переименовать хелперного .wxs файл, соответствующий атрибут Id UI, но это не помогло.

ответ

0

Это два файла в одной папке? Вам может потребоваться указать относительный путь UserRegDialog.wxs в <?include?>

Я думаю, что добавление этого файла в качестве ссылки (визуальная студия добавляет существующий элемент> выберите файл> Добавить кнопку стрелка вниз> «Как ссылка») заставить компилятор правильно связать файл.

Другой вариант, который вы могли бы рассмотреть, особенно если вы собираетесь использовать несколько отдельных файлов wxs, заключается в том, чтобы поместить их все в проект wixlib и ссылаться на этот проект в вашей основной установке. Я думаю, вы также можете построить проект wixlib в расширение и включить DLL, как и wixuiextension и wixutilextension.

Я бы опробовал свои предложения, но у меня нет среды, которую я могу быстро проверить в эти выходные.

+0

Мой вспомогательный файл wxs находится в том же каталоге. Я не думаю, что импортные работы:

0

После того, как вы скомпилируете все файлы, вам нужно просто их связать. Я думаю, файл не компилировался, тогда у вас возникла неразрешенная ошибка компоновщика символов.

с помощью Visual Studio:

Проверить, если файл находится в Compile:

Внутри вашего проекта, щелкните правой кнопкой мыши в ваших UserRegDialog.wxs, выберите Свойства, то вы увидите внутри Свойства файла раздел ПродвинутыйСтроительное действие должно быть установлено на Компиляция.

Без Visual Studio:

Проверьте, если ваша сборка компиляции и компоновки ваши UserRegDialog.wxs правильно.

Пример проекта, связывающего должным образом, каждый файл компилируется связан:

candle MySetup.wxs UserRegDialog.wxs 
    light -out setup.msi MySetup.wixobj UserRegDialog.wixobj 

Ссылка:

https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/fragments/

0

Переименовать файл UserRegDialog.wxi, то вы должны быть в состоянии включить он использует <?include UserRegDialog.wxi?>.Оператор <?include ?> должен быть ниже метки </Product>.

Смежные вопросы