Что еще мне нужно, чтобы показать лицензию помимо WixUILicenseRtf?
В моем wxs
файл, в Product
элемент, я добавил:
<WixVariable Id="WixUILicenseRtf" Value="C:\Users\pupeno\...\src\main\deploy\package\windows\License.rtf" />
Я думаю, что файл читается, потому что, если я поставлю путь, который не существует, msi
файл не генерируется. Но ничего не отображается в процессе установки. Что еще мне не хватает?
Я начинаю с шаблона javafxpackager, поэтому он выглядит примерно так:
<?xml version="1.0" encoding="utf-8"?>
<!-- Customizing the wix template due to: https://github.com/FibreFoX/javafx-gradle-plugin/issues/100 -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="PRODUCT_GUID" Name="APPLICATION_NAME"
Language="1033" Version="APPLICATION_VERSION"
Manufacturer="APPLICATION_VENDOR"
UpgradeCode="PUT-GUID-HERE">
<Package Description="APPLICATION_DESCRIPTION" Comments="None"
InstallerVersion="200" Compressed="yes"
InstallScope="INSTALL_SCOPE" Platform="PLATFORM"/>
<Media Id="1" Cabinet="simple.cab" EmbedCab="yes"/>
<!-- We use RemoveFolderEx to ensure application folder is fully
removed on uninstall. Including files created outside of MSI
after application had been installed (e.g. on AU or user state).
Hovewer, RemoveFolderEx is only available in WiX 3.6,
we will comment it out if we running older WiX.
RemoveFolderEx requires that we "remember" the path for uninstall.
Read the path value and set the APPLICATIONFOLDER property with the value.
-->
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\APPLICATION_VENDOR\APPLICATION_NAME"
Root="REGISTRY_ROOT" Type="raw"
Id="APPLICATIONFOLDER_REGSEARCH" Name="Path"/>
</Property>
<DirectoryRef Id="APPLICATIONFOLDER">
<Component Id="CleanupMainApplicationFolder" Guid="*" Win64="WIN64">
<RegistryValue Root="REGISTRY_ROOT"
Key="SOFTWARE\APPLICATION_VENDOR\APPLICATION_NAME"
Name="Path" Type="string" Value="[APPLICATIONFOLDER]"
KeyPath="yes"/>
<RegistryValue Root="HKLM"
Key="SOFTWARE\APPLICATION_VENDOR\APPLICATION_NAME"
Name="AutoConnectTo" Type="string" Value="[AUTO_CONNECT_TO]"/>
<!-- We need to use APPLICATIONFOLDER variable here or RemoveFolderEx
will not remove on "install". But only if WiX 3.6 is used. -->
WIX36_ONLY_START
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER"/>
WIX36_ONLY_END
</Component>
</DirectoryRef>
<?include bundle.wxi ?>
UI_BLOCK
APP_CDS_BLOCK
<Icon Id="DesktopIcon.exe" SourceFile="APPLICATION_ICON"/>
<Icon Id="StartMenuIcon.exe" SourceFile="APPLICATION_ICON"/>
SECONDARY_LAUNCHER_ICONS
<MajorUpgrade Schedule="afterInstallInitialize"
DowngradeErrorMessage="A later version of app is already installed. Setup will now exit."/>
<Icon Id="icon.ico" SourceFile="App.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico"/>
<Property Id="AUTO_CONNECT_TO">
<RegistrySearch Id="AutoConnectTo"
Root="HKLM"
Key="SOFTWARE\APPLICATION_VENDOR\APPLICATION_NAME"
Name="AutoConnectTo" Type="raw"/>
</Property>
<WixVariable Id="WixUILicenseRtf" Value="C:\Users\pupeno\...\src\main\deploy\package\windows\License.rtf" />
</Product>
</Wix>
и причина, по которой я использую полный путь, заключается в том, что я не знаю относительно того, что ожидает javafxpackager. Я хочу видеть, как это работает в первую очередь.
1 ответ
ОБНОВЛЕНИЕ: добавлен новый раздел о том, как скомпилировать источники WiX вне Visual Studio. Оставив в Visual Studio раздел для справки.
Visual Studio
Вы в Visual Studio? Если так, я пытался сделать простую демонстрацию того, как сделать минимальный установщик WiX с GUI и лицензионным соглашением некоторое время назад. Может быть, посмотрите, имеет ли это для вас смысл: установщик WiX msi не устанавливает приложение Winform, созданное в Visual Studio 2017.
- Попробуйте пошаговый список сверху
- С вашим предварительным знанием вы также можете просто посмотреть прямо в исходном тексте WiX внизу (встроенные комментарии)
- Важно, что вам нужна ссылка на WixUIExtension.dll, где находятся наборы GUI
Если вы выполните эти шаги, вы должны добиться успеха. Если вы не в Visual Studio, то вам нужно получить командные строки прямо при вызове candle.exe
а также light.exe
, Не ракетостроение, но это может быть немного странно, как мне нравится это называть. Может быть, где-то есть простой пример правильных командных строк - у меня нет доступных сейчас.
ОБНОВЛЕНИЕ: забыл упомянуть, что вам нужно установить эти расширения для Visual Studio в дополнение к WiX: http://wixtoolset.org/releases/. На всякий случай, если вы еще этого не сделали.
Компиляция командной строки
Чтобы скомпилировать исходный файл WiX и включить графический интерфейс пользователя по умолчанию с файлом RTF лицензионного соглашения вне Visual Studio, используйте приведенный выше пример для обновления источника WiX, чтобы он связывал графический интерфейс по умолчанию, а затем попробуйте эти командные строки для компиляции и связывания ваших источников WiX:
Компилировать:
candle.exe product.wxs -ext WixUIExtension
Ссылка:
light.exe -out Test.msi product.wixobj -ext WixUIExtension
Если все работает правильно, вы должны получить Test.msi
файл рядом с исходным файлом WiX XML, и запустив его, вы должны получить графический интерфейс по умолчанию с указанным вами лицензионным соглашением.
И, хотя это очевидно, я просто упомяну об этом: вы можете получить полный список candle.exe
а также light.exe
параметры, просто запустив их без параметров через командную строку.
И так ясно: вы должны использовать процедуру из приведенного выше связанного ответа, чтобы настроить этот графический интерфейс и файл лицензионного соглашения. Повторяю ссылку здесь: установщик WiX msi не устанавливает приложение Winform, созданное в Visual Studio 2017
Суть добавления вашего собственного лицензионного соглашения в ваш MSI заключается в следующем WiX XML:
<UIRef Id="WixUI_Mondo" />
<WixVariable Id="WixUILicenseRtf" Value="TestLicenseAgreement.rtf" />
- Элемент UIRef просто указывает
WixUI_Mondo
набор диалогов по умолчанию (находится вWixUIExtension.dll
) - Элемент WixVariable просто указывает файл лицензии RTF (добавьте путь, если есть)
- Тогда вы связываетесь с
WixUIExtension.dll
ключом -ext дляlight.exe
компоновщик, как показано в командной строке выше.
Есть несколько таких наборов диалогов по умолчанию, но я считаю, что Mondo
это тот, который работает лучше всего. Как я могу добавить дополнительный пользовательский интерфейс в набор инструментов WiX.
Аналогичный ответ: создать MSI из файла.wxs с помощью командной строки