带有java应用程序的Inno设置

带有java应用程序的Inno设置,java,Java,我真的想使用inno setup或其他类似的软件来制作一个“专业”安装程序,其中应用程序通过许可证密钥或序列号分发,并且我想确保安装程序只能在给定的机器上安装一次。这是为了防止人们从安装文件夹复制文件并将其粘贴到另一台计算机上。我已经阅读了很多关于这方面的主题,但它总是指向同一点,一个安装程序只有一个键,这意味着它可以用同一个键安装多次 我曾尝试在没有inno安装程序的情况下直接锁定我的应用程序,通过设置主板id进行检查,但这不是我想要的方式,也不是完美的设计。这是因为软件可以有多个有效密钥,但

我真的想使用inno setup或其他类似的软件来制作一个“专业”安装程序,其中应用程序通过许可证密钥或序列号分发,并且我想确保安装程序只能在给定的机器上安装一次。这是为了防止人们从安装文件夹复制文件并将其粘贴到另一台计算机上。我已经阅读了很多关于这方面的主题,但它总是指向同一点,
一个安装程序只有一个键
,这意味着它可以用同一个键安装多次


我曾尝试在没有inno安装程序的情况下直接锁定我的应用程序,通过设置主板id进行检查,但这不是我想要的方式,也不是完美的设计。这是因为软件可以有多个有效密钥,但当有人使用其中一个密钥时,该密钥不再有效。

如果您不知道它将运行哪台计算机,则在编程阶段,您可以通过在代码开头显式检查IP地址来轻松限制其他计算机

如果您不知道它将是哪台计算机,但只在第一台计算机上运行它,您应该保存在一个内部资源文件中,该文件已经运行过一次。写入内部资源可能有点复杂

在任何情况下,仅限一次使用,也可以使用内部资源解决方案,但如果您不需要它(例如,您知道它将在哪台计算机上运行),则可以使用首选项:

// in the beginnig of your main
if(Preferences.get("myapp.usedonce") != null)
    return;

// at the end of main
Preferences.put("myapp.usedonce", "yes");

如果IP不是静态的呢?有更多的固定信息,比如计算机名。尝试更改其名称不会有任何帮助,因为首选项会显示它已经运行过一次。这将是一个商业应用程序,我将提供给多家企业,我不知道它们的IP是什么,即使是静态的还是非静态的,还有其他方法吗?你能更具体一点,给我一个inno安装程序的示例代码吗?谢谢。此外,@MouseEvent,我如何知道电脑是否安装了jre或我的应用程序需要运行的东西,如果没有,我如何知道并安装它们?@AlejandroArenas可以帮助你完成jre部分。