Включение измененного диалогового окна FilesInUse в проект WIX
-
09-10-2019 - |
Вопрос
У меня есть измененное диалоговое окно FilesInUse.Простое включение его в проект и изменение ссылки в пользовательском интерфейсе не помогает - я получаю "ICE20:Стандартный диалог:Ошибка "FilesInUse" не найдена в диалоговой таблице" при создании проекта установки.
Просматривая Сеть, я нашел один совет - отключить проверку ICE для ICE20.Что ж, создание проекта с такими настройками работает нормально, и msi тоже работает нормально, но я не уверен, что это хорошее решение проблемы.
Другим советом было изменить FilesInUse и удалить WixUIExtension из references, но, насколько я знаю, таким образом я в конечном итоге скопирую все необходимые файлы диалоговых окон в свой проект.Этого я бы хотел избежать.
Итак, что можно сделать, чтобы правильно включить мой пользовательский FilesInUse в проект WIX?
Решение
Смотрите связанный вопрос и ответы здесь: Wix Заменить диалог
Пользователь Ян Скляренко ответил на 25 марта '11:
Пара статей, чтобы помочь вам:
Вы должны найти всю необходимую информацию для вашего дела там.
Пользователь Боб Арнсон ответил на 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 можно установить.