如何在Windows上安装IzPack安装的应用程序?

时间:2014-07-02 13:33:44

标签: java windows izpack

我的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> 

1 个答案:

答案 0 :(得分:2)

要在“添加/删除程序”部分中列出,在Windows中,您需要RegistryInstaller/UninstallerListener来处理添加/删除注册表项以及添加/删除软件部分。见HERE

对于卸载时权限,解决了以下解决方案的错误HEREFixed: 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"实际上禁用了卸载程序的权限提升,根据文档。因此,不使用此属性是卸载程序接收权限提升所需的内容。