Arhn - архитектура программирования

Wix добавляет внешнюю dll в папку установки

Я новичок в Wix, и я пытаюсь создать пакет установки службы Windows с Wix 3.10 в Visual Studio 2012, но не могу добавить внешние ссылки на dll.

У меня есть проект, который представляет собой службу Windwos, которую я хочу установить со ссылками. И ParodosService.Setup - мой установочный проект. :

вот мой файл .wxs из проекта ParodosService.Setup:

    <?xml version="1.0" encoding="UTF-8"?>
<!-- The name of the product -->
<?define Name = "Vision Service" ?>
<!-- The manufacturer, for setup package publisher and folder info -->
<?define Manufacturer = "MyCompany" ?>
<!-- The version number of this setup package-->
<?define Version = "1.0.1" ?>
<!-- UpgradeCode must be unique and not changed once the first version of the program is installed. -->
<?define UpgradeCode = "{1240E0CD-B3D2-44A7-B064-11B3C0709D69}" ?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="$(var.Name)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" Version="$(var.Version)" Language="1033">
    <!-- Create a folder inside Talk Sharp called Test Service -->
    <Package InstallerVersion="300" Compressed="yes"/>
    <!-- Create a folder inside Talk Sharp called Test Service -->
    <Media Id="1" Cabinet="ParodosService.cab" EmbedCab="yes" />
    <!-- Allow upgrades and prevent downgrades -->
    <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
    <!-- Define the directory structure -->
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <!-- Create a folder inside program files called Talk Sharp -->
        <Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
          <!-- Create a folder inside Talk Sharp called Test Service -->
          <Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
        </Directory>
      </Directory>
    </Directory>

    <ComponentGroup Id="DllsComponent" Directory="INSTALLFOLDER" Source="C:\Users\Pasquale\Documents\Visual Studio 2012\Projects\ParodosService\ParodosService\bin\Release">      
      <Component Id="EntityFramework.dll">
        <File Name="EntityFramework.dll" />
      </Component>
      <Component Id="EntityFramework.SqlServer.dll">
        <File Name="EntityFramework.SqlServer.dll" />
      </Component>          
      <Component Id="ParodosService.exe.config">
        <File Name="ParodosService.exe.config" />
      </Component>
    </ComponentGroup>
    <!-- The files inside this DirectoryRef are linked to the Test Service directory via INSTALLFOLDER -->
    <DirectoryRef Id="INSTALLFOLDER">
      <!-- Create a single component which is the ParodosService.exe file -->
      <Component Id="$(var.ParodosService.TargetFileName)">
        <!-- Copies the ParodosService.exe file using the project reference preprocessor variables -->
        <File Id="$(var.ParodosService.TargetFileName)" Source="$(var.ParodosService.TargetPath)" KeyPath="yes" />
        <!-- Remove all files from the INSTALLFOLDER on uninstall -->
        <RemoveFile Id="ALLFILES" Name="*.*" On="both" />
        <!-- Tell WiX to install the Service -->
        <ServiceInstall Id="ServiceInstaller" 
                        Type="ownProcess" 
                        Name="ParodosService" 
                        DisplayName="$(var.Name)" 
                        Description="A Test Service that logs dummy text on an interval to a text file." 
                        Start="auto" 
                        ErrorControl="normal" />
        <!-- Tell WiX to start the Service -->
        <ServiceControl Id="StartService" Start="install" Stop="both" remove="uninstall" Name="ParodosService" Wait="yes" />
      </Component>
    </DirectoryRef>
    <!-- Tell WiX to install the files -->
    <Feature Id="MainApplication" Title="Main Application" Level="1">
      <ComponentRef Id="$(var.ParodosService.TargetFileName)" />
    </Feature>
  </Product>
</Wix>

Я вручную добавил три компонента в ComponentGroup, указав три файла, которые мне нужны, в папке установки моей службы Windows. Такая модификация вручную возвращает мне по одной ошибке для каждого добавленного файла:

ICE21: Component: 'EntityFramework.dll' does not belong to any Feature.

Поскольку я новичок в WIX, у меня тоже были проблемы с тем, чтобы сделать это с помощью heat.exe, и я подумал, что это был более простой способ, но оба способа дают мне ошибки ...


  • Существует более простой способ указать папку вывода, чем указать полный путь. Вы можете использовать <ComponentGroup Id="DllsComponent" Directory="INSTALLFOLDER" Source="$(var.ParodoService.TargetDir)">. 04.04.2017

Ответы:


1

Сообщение об ошибке сообщает вам, что ваш компонент является сиротским, он должен принадлежать функции.

Я думаю, что если вы измените определение функции вот так, оно должно работать:

<Feature Id="MainApplication" Title="Main Application" Level="1">
      <ComponentRef Id="$(var.ParodosService.TargetFileName)" />
      <ComponentGroupRef Id="DllsComponent"/>
</Feature>
05.06.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..