Izpack简单安装只是为了复制文件

时间:2014-06-30 12:55:51

标签: izpack

我正在尝试使用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\

中启动安装

1 个答案:

答案 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