Я использовал IzPack для установки и обновления. IzPack изначально не связан с какой-либо системой упаковки, поэтому у IzPack нет возможности окончательно узнать, установлено ли что-либо. Возможно, вы попытаетесь взаимодействовать с реестром или каким-то конкретным файлом, созданным вами во время установки, но это все еще грязно (в любом случае, мне).
Однако IzPack проверяет, существует ли уже файл, перед тем как перезаписать его, поэтому, если вы запускаете обновление, например, вы хотите, чтобы двоичные файлы обновлялись, а пользовательская конфигурация оставалась одна, поэтому сделайте что-то подобное внутри элемента packs: 1003 *
<packs>
<pack name="CorePack" required="yes" preselected="yes">
<description>The core of the app.</description>
<file src="bin/binaryapp" targetdir="$INSTALL_PATH/bin"
override="true">
<os family="unix" />
</file>
<file src="etc/config.conf" targetdir="/etc/appdir">
<os family="unix" />
</file>
</pack>
</packs>
Вы видите, что в двоичном файле есть override = "true", а в конфигурации нет (по умолчанию override = false). Двоичный файл обновляется, конфиг - нет.
Jeff