我正在尝试使用IzPack制作一个非常简单的安装程序。它应该做以下两件事 1.将dist目录的所有内容复制并粘贴到UserHome / MyApp目录。 2.执行批处理文件以编辑注册表项以在用户登录时启动jar文件。
但我只是坚持第一步!如果我使用以下XML并生成安装程序,则不会安装任何内容。生成的安装程序运行并显示InstallPanel,但不会将任何内容复制到user_home目录。
从看起来我无法为Install_path变量赋值。
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<installation version="1.0">
<variables>
<variable name="INSTALL_PATH" value="$USER_HOME/MyApp"/>
</variables>
<info>
<appname>My App</appname>
<appversion>1.0</appversion>
<authors>
<author name="My APP Author" email="support@myapp.com"/>
</authors>
<url>http://SomeURL.net</url>
</info>
<guiprefs width="640" height="480" resizable="yes"/>
<locale>
<langpack iso3="eng"/>
</locale>
<panels>
<panel classname="InstallPanel"/>
</panels>
<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<fileset dir="dist" targetdir="$INSTALL_PATH"/>
</pack>
</packs>
</installation>
更新
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<installation version="1.0">
<variables>
<variable name="TargetPanel.dir.windows" value="$USER_HOME\MyTeamNinja"/>
<variable name="TargetPanel.dir.mac" value="$USER_HOME/MyTeamNinja"/>
</variables>
<info>
<appname>My App</appname>
<appversion>1.0</appversion>
<authors>
<author name="MyTeamNinja" email="support@MyTeamNinja.com"/>
</authors>
<url>http://myteam.ninja</url>
</info>
<guiprefs width="640" height="480" resizable="yes"/>
<locale>
<langpack iso3="eng"/>
</locale>
<panels>
<panel classname="DefaultTargetPanel"/>
<panel classname="InstallPanel"/>
<panel classname="SimpleFinishPanel"/>
</panels>
<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<fileset dir="dist" targetdir="$INSTALL_PATH"/>
</pack>
</packs>
</installation>
现在,只要我点击安装程序,就会在c:\program files\My App\
答案 0 :(得分:1)
您需要的是TargetPanel
。它允许用户选择目标目录。安装文件。此面板中选择的位置设置$INSTALL_PATH
的值。
但是,您也可以覆盖$INSTALL_PATH
的默认值。为了覆盖$INSTALL_PATH
的默认值,您可以执行以下操作:
<variables>
<variable name="TargetPanel.dir.windows" value="$USER_HOME/MyApp"/>
<variable name="TargetPanel.dir.unix" value="$USER_HOME/MyApp"/>
</variables>
,或者
<variables>
<variable name="DEFAULT_INSTALL_PATH" value="$USER_HOME/MyApp"/>
</variables>
并且,如果您选择允许用户选择,请务必在TargetPanel
之前加入 InstallPanel
用于安装的目标位置。。
<panels>
<panel classname="TargetPanel"/>
<panel classname="InstallPanel"/>
</panels>
有关详情,请参阅HERE。
更新:
TargetPanel
部分的InstallPanel
之前放置<panels>
的条目。<resources>
部分:<resources>
<res id="TargetPanel.dir.windows" src="$USER_HOME/MyApp"/>
<res id="TargetPanel.dir.unix" src="$USER_HOME/MyApp"/>
</resources>
这是生成错误的地方。而是使用<variables>
指定${INSTALL_PATH}
的默认值(请参阅上面的答案)。${INSTALL_PATH}
到<variables>
的值,您需要使用name="DEFAULT_INSTALL_PATH"
或TargetPanel.dir.windows/unix
更新2:以下代码安装在正确的位置(由您在defaultInstallDir.txt
中指定)。
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<installation version="1.0">
<!-- variables>
<variable name="TargetPanel.dir.windows" value="$USER_HOME\MyTeamNinja"/>
<variable name="TargetPanel.dir.mac" value="$USER_HOME/MyTeamNinja"/>
</variables -->
<!-- remove the above <varible> section and include the REQUIRED defaultInstallDir.txt to set the value for the DefaultTargetPanel -->
<resources>
<res id="TargetPanel.dir" src="defaultInstallDir.txt"/>
</resources>
<info>
<appname>My App</appname>
<appversion>1.0</appversion>
<authors>
<author name="MyTeamNinja" email="support@MyTeamNinja.com"/>
</authors>
<url>http://myteam.ninja</url>
</info>
<guiprefs width="640" height="480" resizable="yes"/>
<locale>
<langpack iso3="eng"/>
</locale>
<panels>
<panel classname="DefaultTargetPanel"/>
<panel classname="InstallPanel"/>
<panel classname="SimpleFinishPanel"/>
</panels>
<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<fileset dir="dist" targetdir="$INSTALL_PATH"/>
</pack>
</packs>
</installation>
现在,创建一个名为defaultInstallDir.txt
的文件,只需在此文件中写下以下内容:
$USER_HOME/MyApp
只需确保通过src=".."
部分的<resources>
属性在安装程序中正确包含此文件,您就可以了。
双击安装程序会直接在$USER_HOME/MyApp
中安装文件(在我的情况下:C:\Users\Sunny\MyApp
)