我的IzPack安装配置在Linux上运行良好。安装和卸载都按预期工作。
安装在Windows上也可以正常工作,但卸载并不起作用。 IzPack在系统上放置的卸载程序经历了工作的动作,但实际上并没有删除任何文件。我认为这是由于UAC阻止了它,因为如果我打开管理员CLI并执行&#34; java -jar uninstaller.jar&#34;有用。是否有配置选项告诉它在卸载时需要权限提升?我已经在我的install.xml中<run-privileged condition="izpack.windowsinstall"/>
(安装成功所需,并且Linux安装需要Windows限制才能正常运行)。
我还注意到它并没有出现在&#34;添加/删除程序&#34; Windows的一部分。是否有一个简单的配置更改来设置它(如果它有大量的自定义代码,它是不值得的,但如果它不是太大,我想支持它麻烦)?
INSTALL.XML:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<installation version="1.0">
<info>
<appname>Program</appname>
<appversion>5.0</appversion>
<appsubpath>The Corporation</appsubpath>
<javaversion>1.7</javaversion>
<uninstaller name="uninstaller.jar" path="${INSTALL_PATH}/uninstaller" write="yes"/>
<url>http://www.example.com</url>
<run-privileged condition="izpack.windowsinstall"/>
<pack200/>
</info>
<guiprefs width="640" height="480" resizable="no"/>
<locale>
<langpack iso3="eng"/>
</locale>
<resources>
<res id="LicencePanel.licence" src="License.txt"/>
<res id="InfoPanel.info" src="Readme.txt"/>
<res src="shortcutSpec.xml" id="shortcutSpec.xml"/>
<res src="unix_shortcutSpec.xml" id="unix_shortcutSpec.xml"/>
</resources>
<native type="izpack" name="ShellLink.dll"/>
<native type="izpack" name="ShellLink_x64.dll"/>
<native type="3rdparty" name="COIOSHelper.dll" stage="both">
<os family="windows"/>
</native>
<native type="3rdparty" name="COIOSHelper_x64.dll" stage="both">
<os family="windows"/>
</native>
<listeners>
<listener installer="RegistryInstallerListener" uninstaller="RegistryUninstallerListener" >
<os family="windows"/>
</listener>
</listeners>
<panels>
<panel classname="HelloPanel"/>
<panel classname="InfoPanel"/>
<panel classname="LicencePanel"/>
<panel classname="TargetPanel"/>
<panel classname="ShortcutPanel"/>
<panel classname="PacksPanel"/>
<panel classname="InstallPanel"/>
<panel classname="FinishPanel"/>
</panels>
<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<file src="Readme.txt" targetdir="$INSTALL_PATH"/>
<file src="License.txt" targetdir="$INSTALL_PATH"/>
<file src="Program.jar" targetdir="$INSTALL_PATH"/>
<file src="lib" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="Manual" preselected="yes" required="no">
<description>The documentation</description>
<file src="Manual.pdf" targetdir="$INSTALL_PATH"/>
</pack>
</packs>
</installation>
答案 0 :(得分:2)
要在“添加/删除程序”部分中列出,在Windows中,您需要RegistryInstaller/UninstallerListener
来处理添加/删除注册表项以及添加/删除软件部分。见HERE
对于卸载时权限,解决了以下解决方案的错误HERE:Fixed: the uninstaller is told to make an elevation only if the installer did a successful one.
因此,卸载程序应自动升级(如果安装程序,则) 。
我怀疑条件izpack.windowsinstall
实际上是否正常工作
HERE-in-the-doc它指出Valid operating system names are izpack.windowsinstall.7, izpack.windowsinstall.vista, izpack.macinstall
..我知道对于XP而言,使用<run-privileged/>
的工作正常。所以请检查此condition
属性。也许您需要将其更改为实际为installer
提供管理员权限,因此自动更改为Uninstaller
。
对于Is there a configuration option to tell it to require privilege escalation on uninstall?:
,有一个属性(具有讽刺意味的是,uninstaller="yes"
),您可以像<run-privileged uninstaller="yes" condition.../>
一样指定。
这里uninstaller="yes"
实际上禁用了卸载程序的权限提升,根据文档。因此,不使用此属性是卸载程序接收权限提升所需的内容。