2014-05-07 3 views
6

Я новичок в Wix, и я пытаюсь создать установщик для приложения MVC4 с помощью Wix. Прежде всего, я использую некоторые документы из этого, я нашел пример кода, который уже показывает, как создать инсталлятор для MVC4 Применение this linkНеразрешенная ссылка на символ в Wix

Но когда я пытаюсь построить проект установки Wix, он дает мне ошибки как ниже

Error 16 Unresolved reference to symbol 'WixComponentGroup:MyWebWebComponents' in section 'Product:{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}'. C:\Users\Baris\Desktop\New folder\WIXInstallerDemo-master\DemoWebsite.Setup\Product.wxs 15 1 DemoWebsite.Setup 

Error 17 Unresolved reference to symbol 'WixComponentGroup:DemoWebsiteIssConfiguration' in section 'Product:{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}'. C:\Users\Baris\Desktop\New folder\WIXInstallerDemo-master\DemoWebsite.Setup\Product.wxs 16 1 DemoWebsite.Setup 

** Я только что проверил в интернете для решения. Один из них говорит, что добавьте WixUIExtension в качестве ссылки. Я уже сделал это, но это не имеет никакого смысла.

Это Product.wxs. И дети параметрический узел в узлах вызывает эту ошибку **

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
<Media Id="1" Cabinet="DemoWebsite.cab" EmbedCab="yes" /> 

<Property Id="DB_USER" Value="sa"/> 
<Property Id="DB_PASSWORD" Value="sa"/> 
<Property Id="DB_SERVER" Value="LOCAL"/> 
<Property Id="DB_DATABASE" Value="DemoWebsite"/> 

<Feature Id="ProductFeature" Title="DemoWebsite.Setup" Level="1"> 
    <ComponentGroupRef Id="MyWebWebComponents" /> 
    <ComponentGroupRef Id="DemoWebsiteIssConfiguration" /> 
</Feature> 
<!-- Specify UI --> 
<UIRef Id="MyUI" /> 
<Property Id="WIXUI_INSTALLDIR" Value="INETPUB" /> 

Какая проблема? Я знаю его очень специфический для SO, но я не могу найти какое-либо решение в Интернете.

Я использую VS 2012- Wix сообщение 4,0

ответ

6

ошибка говорит все: он ожидает ComponentGroup -tag, содержащего ваши компоненты (например, содержащих файлы или ключи реестра). Если вы посмотрите пример проекта, который вы связали в своем вопросе, элемент <ComponentGroupRef Id="DemoWebsiteIssConfiguration" /> ссылается на ComponentGroup с именем DemoWebsiteIssConfiguration. Вы можете найти это в файле DemoWebsite.Setup\IISConfiguration.wxs:

<ComponentGroup Id="DemoWebsiteIssConfiguration"> 
    <ComponentRef Id="InstallWebsite" /> 
    <ComponentRef Id="DemoWebsiteAppPool" /> 
</ComponentGroup> 

Это ComponentGroup, который содержит два компонента, или, в данном случае ссылки на две составляющие. Эти компоненты определены выше элемента ComponentGroup в том же файле.

Отчество ComponentGroupRef с идентификатором MyWebComponents: Реферат ComponentGroup создается динамически во время сборки. Вы можете посмотреть файл DemoWebsite.Setup\setup.build. Этот файл является файлом MSBuild, который используется для создания установки. Он содержит цель с именем Harvest, которая вызывает heat, еще один инструмент пакета WiX Toolset. heat будет разбираться, например. каталог и собрать все файлы, содержащиеся внутри, и поместить их в ComponentGroup, которые вы можете ссылаться в исходном файле. То есть вы определяете ссылку на ComponentGroup, а затем можете динамически создавать контент. Таким образом, вам не нужно беспокоиться о том, что файл добавляется или удаляется из проекта, так как heat будет собирать их динамически.

<Target Name="Harvest"> 
    <!-- Harvest all content of published result --> 
    <Exec 
     Command='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg MyWebWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)' 
     ContinueOnError="false" 
     WorkingDirectory="." /> 
    </Target> 

Название динамически созданного ComponentGroup определяется с помощью параметра -cg.вы можете вызвать heat с параметром -? для краткого описания возможных параметров.

+0

+1 информативный ответ. Я нашел IISConfiguration.wxs и поместил его в проект Wix, тогда одна проблема исчезла. И только один из них оставлен и связан с . Где я могу получить MyWebWebComponents? Установки setup.build уже там не помогают проекту wix, который нужно построить. Должен ли я вручную генерировать его, используя тепло? (Примечание: теперь я использую Wix 4.0) –

+0

Загружая весь проект, создавая 'publish'-folder в' DemoWebsite.Setup', помещая в него некоторые файлы, а затем вызывая 'msbuild setup.build', будет создан MSI, сбор урожая все файлы в созданной папке «DemoWebsite.Setup \ publish'». Однако вы также можете сами создать исходный файл с соответствующей 'ComponentGroup' вручную или использовать' heat' для сбора каталога с необходимыми файлами. 'heat' создаст еще один исходный файл WiX, который вы должны ссылаться при вызове' candle' и 'light', поэтому найденная ссылочная' ComponentGroup' найдена. В качестве примеров используйте 'Exec'-taks в' setup.build'. – taffit

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

  • Нет связанных вопросов^_^