Як створити мінімальний інтерфейс інсталятора WiX без сторінки ліцензії?


74

Я хотів би використовувати інсталятор WixUI_Minimal, але я не хочу сторінку ліцензії. Як я можу це зробити?

Відповіді:


91

Я просто використав би один із уже створених інтерфейсів WiX і перевизначив послідовність (зробіть її вищою, щоб вона замінила попереднє налаштування):

    <Product> 
        ...
        <UI>
            <UIRef Id="WixUI_InstallDir" />

            <!-- Skip license dialog -->
            <Publish Dialog="WelcomeDlg"
                     Control="Next"
                     Event="NewDialog"
                     Value="InstallDirDlg"
                     Order="2">1</Publish>
            <Publish Dialog="InstallDirDlg"
                     Control="Back"
                     Event="NewDialog"
                     Value="WelcomeDlg"
                     Order="2">1</Publish>
        </UI>

        <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
        ...
    </Product>

9
Ця відповідь була б кращою, якби вона пояснювала, куди поставити тег UI
Алан

3
@Alan Я помістив елемент <UI> в елемент <Product>, який працював нормально.
theDmi

@Justin Інтерфейс користувача та UIRef, очевидно, не може бути першим елементом продукту. Я не уявляю, чому, але це не вдалося і мені, поки у мене не було чогось вище цього. Не впевнений, що це та сама помилка.
Джош Саттерфілд,

1
не компілюється: помилка LGHT0091: Знайдено повторюваний символ 'ControlEvent: WelcomeDlg / Next / NewDialog / VerifyReadyDlg / Installed AND PATCH'. Зазвичай це означає, що ідентифікатор дублюється. Перевірте, щоб усі ваші ідентифікатори певного типу (Файл, Компонент, Функція) були унікальними. ... і так далі
Андреас Нідермайр

1
@Justin: Для коду помилки 2819 см stackoverflow.com/a/24439962/569302
Jared

54

Головне - створити користувальницький інтерфейс та підключити різні сторінки. Дивіться сторінку на WixWiki

Ви хочете взяти мінімальний код WixUI і трохи його змінити. Замість діалогового вікна WelcomeEulaDlg ви хочете використовувати WelcomeDlg. Відрегулюйте посилання та підключіть кнопку "Далі" на WelcomeDlg до наступного діалогового вікна у стеці, яке буде PrepareDlg.

Повний код:

  <UI Id="WixUI_Minimal">
    <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
    <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
    <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />

    <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
    <Property Id="WixUI_Mode" Value="Minimal" />

    <DialogRef Id="ErrorDlg" />
    <DialogRef Id="FatalError" />
    <DialogRef Id="FilesInUse" />
    <DialogRef Id="MsiRMFilesInUse" />
    <DialogRef Id="PrepareDlg" />
    <DialogRef Id="ProgressDlg" />
    <DialogRef Id="ResumeDlg" />
    <DialogRef Id="UserExit" />

    <!-- This is the welcome dialog you specified-->
    <DialogRef Id="WelcomeDlg" /> 

    <!-- Hook the new welcome dialog to the next one in the stack-->
    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="PrepareDlg">1</Publish> 

    <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>

    <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>

    <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
    <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
    <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>

    <Property Id="ARPNOMODIFY" Value="1" />
  </UI>

  <UIRef Id="WixUI_Common" />

Дякую, я знав, що мені потрібно робити, але не знав, що встановити наступне діалогове вікно після WelcomeDlg. Де я можу знайти, що таке стек діалогу? Як я міг зрозуміти, що наступним діалоговим вікном після WelcomeDlg має бути PrepareDlg?
Карлос

У мене проблема з наведеним вище кодом і запуск програми, яка також використовує ExitDialog <Publish Dialog = "ExitDialog" Control = "Finish" Event = "DoAction" Value = "LaunchApplication"> NOT WIXUI_EXITDIALOGOPTIONALCHECKBOX і НЕ ВСТАНОВЛЕНО </Publish> додаток не було не закрито належним чином
se_pavel

1
Я скористався наведеним вище кодом (з 2009 р.) І отримав "Змінна XML для інсталятора Windows! (Wix.WixUICostingPopupOptOut) невідома. Для вирішення цієї проблеми я отримав останнє джерело та скопіював фрагмент \ src \ ext \ UIExtension \ wixlib \ WixUI_Minimal.wxs Потім видалив <DialogRef Id = "WelcomeEulaDlg" /> і додав новий DialogRef та Опублікувати відповідно до відповіді Адама.
Мартін Каподічі,

3
Посилання wixwiki порушено.
Ніколас Рауль,

1
У Wix 3.11.0 за допомогою Visual Studio з’являється повідомлення про помилку "Дубльований символ WixUI: WixUI_Minimal ..." Щоб виправити, просто знайдіть і замініть WixUI_Minimal на WixUI_CustomMinimal у наведеному вище фрагменті коду, а потім у головному продукті виконайте <UIRef Id = " WixUI_CustomMinimal "/>
user922020

11

Низькотехнологічний спосіб обійти це просто встановити властивість LicenseAcceptedв1 і покласти деяку корисну інформацію про типі ріого в поле ліцензії. Це означає, що користувачеві не потрібно клацнути поле, і вам не доведеться турбуватися про створення додаткового діалогового вікна :)

Приклад:

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

3
Зокрема:<Property Id="LicenseAccepted" Value="1"/>
Натан

6

Див. Відповідь на відповідне запитання , сценарій WiX із лише екранами привітання та завершення , для найпростішого мінімального інтерфейсу користувача:

  1. WelcomeDlg
  2. Хід встановлення
  3. Діалогове вікно виходу

1
Це відповідь, яку я шукав. Всі інші рішення тут мають мінуси і вимагають більшої кількості клацань, щоб пройти через діалоги.
Eternal21,

3

Відповідь @Ran Davidovitz дуже хороша

але будь обережно:

<Publish Dialog="InstallDirDlg"
         Control="Back"
         Event="NewDialog"
         Value="WelcomeDlg"
         Order="2">1</Publish> 

він повинен мати Order = "2" , інакше він не може працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.