Я создаю установщик Bundle, используя стандартный загрузчик WiX для установки .NET Framework 4.5 (если еще не установлен) и моего приложения на компьютер пользователя. Установщик пакета также позволяет пользователю установить путь установки для приложения и использует только пользовательский интерфейс стандартного загрузчика WiX (интерфейсы других установщиков не отображаются для пользователя).
Сейчас я пытаюсь разрешить пользователю запускать мое приложение в конце установки.
Ближайшие связанные с этим ответы, которые я мог найти, используют переменную с именем LaunchTarget , которая заставляет стандартный загрузчик WiX отображать кнопку «Запуск» в конце установки.
Ниже приведены решения и причины, по которым я не смог их использовать:
Ответ «A» предлагает установить переменную LaunchTarget в точную папку внутри папки «Program Files», в которую должно быть установлено приложение. Это не работает для меня, потому что я хочу позволить пользователю указать целевую папку установки (приложение может быть установлено вне папки «Program Files»).
Ответ «B» предлагает установить переменную LaunchTarget с помощью переменной InstallFolder , чтобы определить, где пользователь настроил стандартный загрузчик для установки Программное обеспечение для. Это казалось идеальным для моего случая, но после установки значения LaunchTarget просто на "[InstallFolder]" я убедился, что нажатие кнопки «Запуск» в пользовательском интерфейсе стандартного загрузчика фактически открывает папку где работает установщик, а , а не папка, в которую пользователь решил установить программное обеспечение, как я и ожидал. (это ошибка?)
Вопрос: как правильно установить переменную LaunchTarget на правильный путь, учитывая, что пользователь может изменить папку установки через пользовательский интерфейс стандартного загрузчика WiX?
Далее следует код для Бунда.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="My Game Trainer" Manufacturer="MY_MANUFACTURER_ID_HERE" UpgradeCode="MY_GUID_HERE" Version="!(bind.packageVersion.TrainerMsiPackage)" DisableModify="yes">
<Variable Name="LaunchTarget" Value="[InstallFolder]" />
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLargeLicense">
<bal:WixStandardBootstrapperApplication ShowVersion="yes" LicenseFile="PATH_TO_MY_LICENSE.rtf" />
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx45Web"/>
<MsiPackage Id="TrainerMsiPackage" SourceFile="$(var.SetupMSI.TargetPath)" DisplayInternalUI="no">
<MsiProperty Name="TRAINER_INSTALL_DIR" Value="[InstallFolder]"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
Использование WiX Toolset v3.11.1 (+ расширение Visual Studio 2017) .