Как пропустить требование PIDKey для MSI, используя WIX Toolset? - PullRequest
1 голос
/ 17 мая 2019

Я создаю MSI-инсталлятор, используя набор инструментов wix. Мне нужно для ввода данных пользователем, поэтому я использовал UI Dialog, как в документации: https://www.firegiant.com/wix/tutorial/user-interface/new-link-in-the-chain/

В примере, показанном по ссылке, я удалил CDKeyEdit:

<Control Id="CDKeyEdit" Type="MaskedEdit" X="45" Y="159" Width="250" Height="16" Property="PIDKEY" Text="[PIDTemplate]" />

как это не нужно для моего приложения.

Однако установщик показывает, что ключ недействителен во время установки:

Есть ли способ отменить требование для PIDKey?

Ответы [ 2 ]

1 голос
/ 17 мая 2019
  <Publish Event="ValidateProductID" Value="0">1</Publish>
  <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">CostingComplete = 1</Publish>
  <Publish Event="NewDialog" Value="SetupTypeDlg">ProductID</Publish>

Найдите их, удалите первый и измените условие на последнем на пустое или на 1.

Бесстыдный плагин: посмотрите мой инструмент с открытым исходным кодом IsWiX. Он предоставляет шаблоны и дизайнеры для более быстрого изучения и использования WiX.

Уроки здесь:

https://github.com/iswix-llc/iswix-tutorials

Чтобы включить новый пользовательский диалог, просто раскомментируйте одну строку, как показано здесь:

https://github.com/iswix-llc/iswix-tutorials/blob/master/desktop-application/Installer/DesktopApplication/Code/UI.wxs

Код для нового диалога показан здесь:

https://github.com/iswix-llc/iswix-tutorials/blob/master/desktop-application/Installer/DesktopApplication/Code/UI-CustomDialog.wxs

0 голосов
/ 17 мая 2019

QA : не забудьте проверить во всех режимах установки: install, uninstall, modify, repair, self-repair, patching, major upgrade, etc....Трудно сказать, как все устроено, это не заменит реальное тестирование (просто констатирую очевидное).


UserRegistrationDlg.wxs : Ограничено без тестирования, но есть предложение для UserRegistrationDlg.wxs:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Fragment>
    <UI>
      <Dialog Id="UserRegistrationDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
        <Control Id="NameLabel" Type="Text" X="45" Y="73" Width="100" Height="15" TabSkip="no" Text="&amp;User Name:" />
        <Control Id="NameEdit" Type="Edit" X="45" Y="85" Width="220" Height="18" Property="USERNAME" Text="{80}" />
        <Control Id="OrganizationLabel" Type="Text" X="45" Y="110" Width="100" Height="15" TabSkip="no" Text="&amp;Organization:" />
        <Control Id="OrganizationEdit" Type="Edit" X="45" Y="122" Width="220" Height="18" Property="COMPANYNAME" Text="{80}" />
        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&amp;Back">
          <Publish Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
        </Control>
        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next">
          <Publish Event="NewDialog" Value="SetupTypeDlg">1</Publish>
        </Control>
        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>Please enter your customer information</Text>
        </Control>
        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
          <Text>{\WixUI_Font_Title}Customer Information</Text>
        </Control>
        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
      </Dialog>
    </UI>
  </Fragment>
</Wix>

Быстрое объяснение изменений : Изменены только несколько вещей.

Извлеките фактические элементы управления для CD-ключа:

<Control Id="CDKeyLabel" Type="Text" X="45" Y="147" Width="50" Height="10" TabSkip="no">
    <Text>CD &amp;Key:</Text>
</Control>
<Control Id="CDKeyEdit" Type="MaskedEdit" X="45" Y="159" Width="250" Height="16" Property="PIDKEY" Text="[PIDTemplate]" />

и удалите связанные события для элемента управления:

<Publish Event="ValidateProductID" Value="0">1</Publish>
<Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">CostingComplete = 1</Publish>

и, наконец, измените условие ProductID на 1 для кнопки «Далее» в диалоговом окне, чтобы новый диалог появлялся, а ключ не проверялся:

<Publish Event="NewDialog" Value="SetupTypeDlg">1</Publish>
...