在Java中创建可执行安装程序

在Java中创建可执行安装程序,java,installation,windows-installer,Java,Installation,Windows Installer,我有兴趣为我的C#应用程序制作一个一键式安装程序 我把应用程序的框架放下了。installer()方法中应用程序的逻辑为: public static void installer(){ deleteLegacyFiles(); // deletes old files through a find method moveSQLite(); // moves the database file if(checkRevit2013()){ // ch

我有兴趣为我的C#应用程序制作一个一键式安装程序

我把应用程序的框架放下了。installer()方法中应用程序的逻辑为:

public static void installer(){
        deleteLegacyFiles(); // deletes old files through a find method
        moveSQLite(); // moves the database file
        if(checkRevit2013()){ // checks whether Revit '13 is installed
            movePlugin2013(); // moves my plugin into the Addin folder or Revit
        }else if(checkRevit2014()){ // check whether Revit '14 is installed
            movePlugin2014(); // moves my plugin into the Addin folder or Revit
        }else{ 
            System.out.println("It does not look like you have either Revit 2013 or Revit 2014 installed.");
        }
    }
但是,这个Java脚本(不是Javascript,而是Java脚本)实际上只从
/Desktop/
中获取了三个文件夹,并将它们复制到各自的
目标
文件夹中。我对一种解决方案感兴趣,它可以将我的三个文件夹都转换为一个可执行文件(类似于
.exe
.msi
),并执行上述操作


有没有针对Java的解决方案?将多个文件夹/文件打包在一起,然后允许一键式安装解决方案的东西?我不知道该如何表达我想要的,因为这是我的第一个软件开发项目。欢迎提出任何建议。

您是否正在寻找制作/构建可执行jar文件?如果是这样,你可以用一个罐子之类的东西

以下是步骤:

  • 创建一个包含应用程序类文件的可执行JAR文件。(导航到工作区的bin目录)将其命名为“main.jar” jar cfm main.jar manifest.txt*.class或[jar cfm main.jar manifest.txt.]
  • 创建三个目录:MAIN、LIB和BOOT
  • 将“main.jar”文件放在主目录中
  • 将主应用程序所依赖的jar文件放在LIB目录中
  • Naigate to Packaging—在MAIN和LIB目录中创建一个新的JAR文件。将这个命名为“MyUtil.jar”。您不需要向该文件添加清单或执行任何特殊操作。它不需要是可执行的。只需使其包含主目录和LIB目录的内容即可。 jar cf MyUtil.jar主库
  • 将“one-jar boot.jar”文件的内容解压缩到启动目录中
  • 导航到启动目录,并使用以下内容更新“MyUtil.jar”文件: jar-uvfm../MyUtil.jar boot-manifest.mf
  • 您的“MyUtil.jar”文件现在应该是可执行的。测试一下

  • 您可以用java创建一个可执行的jar文件。这个jar将有一个应用程序来执行上面列出的所有复制操作。但是它不是从桌面复制,而是复制包含在可执行jar中的目录。jar是一种压缩文件类型(事实上,您可以将扩展名从jar更改为zip并检查内容)

    您的策略是创建一个常规的java应用程序,并将其打包为一个可执行的jar。在jar中包含要作为资源安装的目录。查看jar文档,了解操作jar的所有java实用工具方法和类


    关于.jar安装程序,我担心的一个问题是它包含了一个
    import
    ,这不一定在每台计算机上都可用<代码>导入org.apache.commons.io.FileUtils是我必须在线下载的东西,并拖到我的项目中。
    .jar
    s是否也有能力将其打包?是的,从技术上讲,您可以在自己的jar中将其他库打包为jar。然而,从法律上讲,您只需要遵守任何版权和许可证问题,特别是如果您打算在自己的私人使用之外发布软件。对于ApacheCommons库,这里提供了许可证:是的,您可以将您的文件以及依赖文件包含到一个可执行jar中。我们已将其与autosys一起用于执行定时作业。