Включение измененного диалогового окна FilesInUse в проект WIX

StackOverflow https://stackoverflow.com/questions/4172455

  •  09-10-2019
  •  | 
  •  

Вопрос

У меня есть измененное диалоговое окно FilesInUse.Простое включение его в проект и изменение ссылки в пользовательском интерфейсе не помогает - я получаю "ICE20:Стандартный диалог:Ошибка "FilesInUse" не найдена в диалоговой таблице" при создании проекта установки.

Просматривая Сеть, я нашел один совет - отключить проверку ICE для ICE20.Что ж, создание проекта с такими настройками работает нормально, и msi тоже работает нормально, но я не уверен, что это хорошее решение проблемы.

Другим советом было изменить FilesInUse и удалить WixUIExtension из references, но, насколько я знаю, таким образом я в конечном итоге скопирую все необходимые файлы диалоговых окон в свой проект.Этого я бы хотел избежать.

Итак, что можно сделать, чтобы правильно включить мой пользовательский FilesInUse в проект WIX?

Это было полезно?

Решение

Смотрите связанный вопрос и ответы здесь: Wix Заменить диалог

Пользователь Ян Скляренко ответил на 25 марта '11:

Пара статей, чтобы помочь вам:

Учебник Wix

Статья Нила Стрейцальма

Вы должны найти всю необходимую информацию для вашего дела там.

Пользователь Боб Арнсон ответил на 25 марта '11 11:

См. «Изменение последовательности пользовательского интерфейса встроенного диалогового окна» в теме «Настройка встроенных наборов Wixui» в Wix.Chm.

Другие советы

Вы можете использовать пользовательский диалог файловых файлов следующим образом:

<Fragment>
<UI>
  <Dialog Id="FilesInUse" Width="370" Height="270" Title="Your product name">
    <Control Id="Retry" Type="PushButton" X="304" Y ="243" Width="56" Height="17" Text="Retry" Default="yes" Cancel="yes">
      <Publish Event="EndDialog" Value="Retry">1</Publish>
    </Control>
    <Control Id="Ignore" Type="PushButton" X="235" Y ="243" Width="56" Height="17" Text="Ignore">
      <Publish Event="EndDialog" Value="Ignore">1</Publish>
    </Control>
    <Control Id="Exit" Type="PushButton" X="235" Y ="243" Width="56" Height="17" Text="Exit">
      <Publish Event="EndDialog" Value="Exit">1</Publish>
    </Control>
    <Control Id ="InUseFiles" Type="ListBox" Width="300" Height="150" X="30" Y ="60" Property="FileInUseProcess" Sorted="yes" TabSkip="yes" />
  </Dialog>
</UI>
</Fragment>

Вы просто должны ссылаться на этот диалог в ваш пользовательский InstallDialog с тегом

<DialogRef Id="FilesInUse" />

Все упомянутые теги являются частью Рекрелирование диалогового окна Ice20

Надеюсь это поможет. Хорошего дня.

Хорошо, я просто потратил некоторое время, пытаясь понять, как решить эту проблему.

Хотя в предлагаемой теме есть несколько хороших ссылок, я думаю, что FilesInUse диалоговое окно немного более специфично для настройки, поэтому я решил написать более конкретное решение проблемы.

Видите ли, проблема в том, что MSI использует FilesInUse диалоговое окно автоматически, поэтому, если вы попытаетесь его как-то изменить, вы получите такие ошибки, как FilesInUse не существует в диалоговой таблице или дублируется FilesInUse диалоговое окно в таблице, если вы ссылаетесь на свой пользовательский диалог из других файлов.

Решение, которое я нашел работающим, состояло в том, чтобы не использовать DialogRef к Виксу FilesInUse диалог вообще, но создать свой пользовательский диалог в основном файле пользовательского интерфейса (куда я обычно помещаю DialogRef Для FilesInUse) и назовите это FilesInUse.

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

Еще одна морщина - это то, что диалоговое окно пользовательского файлового файла не будет отображаться при нажатии на удаление в программах и функциях, поскольку удаление работает с UILevel 3, поэтому будет отображаться только встроенные файловые файлы.

Работать вокруг, которые включают в себя это в вашем продукте. WXS:

<Property Id="ARPNOREMOVE" Value="1" />

Затем, когда пользователи нажимают кнопку «Изменить (или изменить) в программах и функциях, диалоговое окно обслуживания будет иметь кнопку« Удалить », которые они могут использовать, чтобы удалить, и это покажет пользовательские диалоги. Такие продукты, такие как Visual Studio, имеют кнопку изменения / изменения.

Еще одна вещь, это то, что приложения и функции (Windows 10) отключат кнопку MODIFY, если у удаления клавиши Uninstall не имеет настройки модификации. Это должно быть установлено

MsiExec.exe /I{<yourproductcode>}

Ваш Bootstrapper должен будет сделать это. Не уверен, может ли MSI можно установить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top