2017-02-06 3 views
0

Я использую инструмент WiX 3.10 для создания установщика простого приложения C#. Я ознакомился с учебником в официальной документации, но у меня есть следующая проблема: мне нужно добавить .txt-файл в каталог приложения, но установщик только добавляет исполняемый файл приложения. Вот XML-файла .wxs:WiX tool - installer не добавляет файл в каталог установки

структура каталогов:

<Fragment> 
<!-- Step 1: Define the directory structure --> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore"> 
    </Directory> 
    </Directory> 
</Directory>  
</Fragment> 

добавляющие файлы:

<Fragment> 
    <!-- Step 2: Add files to your installer package --> 
    <DirectoryRef Id="APPLICATIONROOTDIRECTORY"> 
     <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb"> 
     <File Id="Controllore.exe" Source="MyPath\Controllore.exe" KeyPath="yes" Checksum="yes"/> 
     </Component> 
     <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca"> 
     <File Id="param.txt" Source="MyPath\param.txt" KeyPath="yes"/> 
     </Component> 
    </DirectoryRef> 
    </Fragment> 
    <Fragment> 
    <!-- Step 3: Tell WiX to install the files --> 
    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="Controllore.exe" /> 
     <ComponentRef Id="param.txt" /> 
    </Feature> 
    </Fragment> 

и в конце концов, я должен добавить эти строки, в противном случае программа установки ничего не установит:

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="APPLICATIONROOTDIRECTORY"> 
    <Component Id="CMP_Controllore"> 
    <File Source="$(var.Controllore.TargetPath)" KeyPath="yes" /> 
    </Component> 
    </ComponentGroup> 
</Fragment> 
+1

WIX? Убегай. Бегите далеко, далеко. –

+0

Мне нравится WIX, вам просто нужно войти в правильный разум, установленный для него. – Polyfun

+0

По крайней мере, это не установка экрана –

ответ

0

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

<?xml ...?> 
<Wix ...> 
    <Product ...> 
    <Package ... /> 
    <MajorUpgrade .../> 
    <MediaTemplate EmbedCab="yes" /> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore"> 
      <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb"> 
      <File Id="Controllore.exe" Source="$(var.Controllore.TargetPath)" 
        KeyPath="yes" Checksum="yes"/> 
      </Component> 
      <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca"> 
      <File Id="param.txt" Source="$(var.Controllore.TargetDir)param.txt" KeyPath="yes"/> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 
    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="Controllore.exe" /> 
     <ComponentRef Id="param.txt" /> 
    </Feature> 
    </Product> 
</Wix> 

Для небольших проектов , Мне гораздо проще просто поместить всю соответствующую информацию непосредственно в Справочник и не беспокоиться о фрагментах. Очевидно, что если вам нужно работать в команде с большим проектом, это не разумно.

+0

Я пробовал свой код, но он не работает: там, где тег пакета закрыт, кажется, что ожидается только. Если я удалю, возникнут дополнительные ошибки: «Неразрешенная ссылка на символику Media: 1 в разделе Product. *». Это одно для каждого файла. – SamuRed

+0

@SamuRed Исправлено это, извините. У меня есть медиа-шаблон, чтобы вставить файл шкафа, который создает WiX. По-прежнему ли она выдает ошибку, если вы добавили 'EmbedCab =" да "' в MediaTemplate? – Meloviz

+0

Код XML теперь в порядке. Произошла ошибка в теге файла файла param.txt: кажется, что он не может найти файл, но, как ни странно, ошибка сообщает правильный путь к файлу, и я уверен, что файл существует! – SamuRed

2

Вам нужно понять, что фрагмент не обрабатывается, если на него не ссылается другой фрагмент. Затем весь фрагмент обрабатывается атомарно.

У меня есть проект с открытым исходным кодом ISWIX (http://iswix.codeplex.com). Он содержит шаблоны проектов VS и графические дизайнеры, которые действительно помогут вам быстрее ускориться. Затем вы можете посмотреть, как он организует фрагменты и посмотреть, как все это объединяется и решить, как действовать.

Вот короткое 2-минутное видео, где я 1) создаю настольное приложение и 2) создаю для него установщик WiX/IsWiX. Это действительно так просто.

https://www.youtube.com/watch?v=nnV_OU6fk8c

+0

Спасибо, я обязательно попробую ваш инструмент, но прямо сейчас я ищу более быстрое решение. – SamuRed

+0

Отправьте мне приглашение на DropBox ([email protected]) с вашим EXE, и у меня будет проект установщика для вас через 10 минут. –

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