Install4j 在桌面上安装4J复制快捷方式

Install4j 在桌面上安装4J复制快捷方式,install4j,Install4j,将应用程序(附带install4j)安装到已安装的计算机上时 它安装了admin,然后安装了其他用户权限, 安装程序将在桌面上生成另一个图标 产生2个或更多应用程序图标 要复制这一点: 在windows上以管理员用户身份安装应用程序 登录到另一个非管理员的用户帐户。 (普通用户帐户) 再次安装应用程序,在客户端完成安装后,它将在桌面上生成另一个图标 如何避免这种行为?涉及两种不同的桌面文件夹,公共文件夹和用户特定文件夹。如果选择了“添加桌面链接”操作的“为所有用户创建”属性,则该操作将尝试在公用

将应用程序(附带install4j)安装到已安装的计算机上时 它安装了admin,然后安装了其他用户权限, 安装程序将在桌面上生成另一个图标 产生2个或更多应用程序图标

要复制这一点:

  • 在windows上以管理员用户身份安装应用程序
  • 登录到另一个非管理员的用户帐户。 (普通用户帐户)
  • 再次安装应用程序,在客户端完成安装后,它将在桌面上生成另一个图标

  • 如何避免这种行为?

    涉及两种不同的桌面文件夹,公共文件夹和用户特定文件夹。如果选择了“添加桌面链接”操作的“为所有用户创建”属性,则该操作将尝试在公用文件夹中创建链接,但这通常需要管理员权限。如果您没有管理员权限,可以检查公用文件夹中是否已经存在这样的文件。操作的条件表达式可以设置为以下内容:

    if (!Util.hasFullAdminRights()) {
        File publicLink = new File(WinFileSystem.getSpecialFolder(
            SpecialFolder.DESKTOP, true), "launcher name.lnk");
        return !publicLink.exists();
    } else {
        return true;
    }
    

    有趣的是,当一个普通用户安装应用程序后,管理员决定安装应用程序。由于“管理员安装”不会搜索每个用户的桌面上是否存在快捷方式,用户最终也会有2个快捷方式-它只会将其添加到公用桌面文件夹,从而在屏幕上创建新链接…但这是另一种情况。这将更难防止,因为无法真正枚举用户。您可以试探性地处理C:\Users的所有子目录,但我不确定是否真的建议这样做。