Общий метод расширения SetValue (но только для свойств ref) будет:
public static void SetValue<T>(this T property, T value)
{
property = value;
}
И будет использоваться как
ButtonOrNull?.Visibility.SetValue(Visibility.Hidden);
Не Установщик MSI, но межплатформенный: izPack
Это - xml-файл, базирующийся со своим собственным GUI или задачей Ant (whtaever, Вы предпочитаете)
Launch4j - открытый исходный код - http://launch4j.sourceforge.net/
InstallJammer - http://www.installjammer.com/
Если Вы ищете Решение с открытым исходным кодом, смотрите здесь: http://java-source.net/open-source/installer-generators
я использовал InstallAnywhere, и я думаю, что это - хорошее решение также.
AntInstaller позволяет Вам создать межплатформенные установщики, где сама установка выполняется с помощью МУРАВЕЙ сценарий. GUI настроен с файлом конфигурации XML.
Мы использовали его для создания довольно сложных установщиков. Для сложных графический интерфейсов пользователя однако, конфигурация может стать очень трудной. В следующий раз я, вероятно, попробовал бы izPack, потому что это, кажется, поддерживает МУРАВЬЯ также, но имеет более хорошие графический интерфейсы пользователя.
Система Установки Nullsoft Scriptable NSIS (первоначально используемый для winamp) создает действительно хорошие установщики для окон, и это очень мощно. Это имеет компилятор, который работает в соответствии с Linux, но получающийся установщик только для окон, к сожалению.
Это довольно тяжело, но стоит иметь в виду, придется ли Вам возможно, сделать какие-либо неопределенно сложные или нестандартные вещи во время установки.
я использовал его, так как это интегрирует приятно с моим (Linux) систему сборки, и я хотел бы использовать пакеты для установки на Linux так или иначе.
Хотя это не основано на Java, приблизительно половина нашего потребительского использования BitRock InstallBuilder для упаковки JAVA-приложений. Это является межплатформенным и поддерживает всю ОС, которой Вы требуете (Linux, Windows, Mac). Установщик является собственным, таким образом, существуют определенные преимущества для него, такие как не требование шага автоматической экстракции или потребности связать JRE, таким образом, установщики имеют тенденцию быть меньшими в размере