gpt4 book ai didi

java - 在构建和签名后修改或自定义安装程序的可能方法有哪些?

转载 作者:行者123 更新时间:2023-12-04 03:35:09 25 4
gpt4 key购买 nike

我们想根据从哪个客户的网站下载软件来标记软件。例如。通过显示客户的 Logo 等。我们只需要一个 ID,软件可以在运行时基于它处理其余的定制。

自定义数量可能很大,我们希望避免预先构建和存储这些安装程序。

我愿意考虑所有选项,尤其是一些开箱即用的想法。

认为在不破坏签名的情况下不可能更改已签名的安装程序 (exe/dmg)。

我正在尝试的一些想法(以及它们的权衡):

  • 将 ID 存储在安装程序下载文件名中(缺点:易碎,浏览器可能会更改名称或附加后缀以避免重名)
  • 要求用户输入下载页面上显示的代码(缺点:给用户带来一些不便)
  • 提供一个带有安装程序和配置文件的 zip(缺点:有些用户无法解压,或者只解压没有配置文件的安装程序)
  • 在 Linux 上,可以在下载时修改安装程序 shell 脚本,如脚本 cannot be signed .
  • 设置一个服务器,在下载请求时即时构建和签署安装程序。为了加快速度,它可能是另一个包装主安装程序的安装程序,唯一的任务是使用 ID 参数提取并运行主安装程序。 (缺点:复杂的基础设施、面向公众的服务器上的代码签名证书、MacOS 公证速度非常慢)

最佳答案

基于 Chromium 的浏览器,如 Google Chrome、Chromium、Opera、Microsoft Edge 等,会在 Windows 10(仅限 NTFS 文件系统)和 Linux(仅限 Ext4)上保存所有下载文件的原始 URL 和引用 URL .

有关详细信息,请参见示例 here .在 Windows 上,也可以从命令行或直接从 Java 访问元数据.

Mac 上似乎有类似的功能。参见示例 this关于 super 用户的问题。

从安装程序中访问此元数据有助于自定义安装程序的行为。虽然数据在所有设置中都不可用(例如 Internet Explorer 仅存储 zone ID 而没有 URL)并且可能会丢失(例如用户删除数据或将文件复制到不支持元数据的文件系统),但它可能会覆盖您的大多数用户。在未找到元数据时要求用户输入代码仍然可以用作后备。

我对这种方法的主要担心是 Chromium 开发人员可能会决定在不久的将来删除此功能或将其设为可选,就像 wget 的开发人员一样(参见示例 here)

在最新的 Windows 10 上,我仍然可以使用最新的 Google Chrome 和 Microsoft Edge 浏览器获取下载文件的以下元数据:

[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://httpd.apache.org/
HostUrl=https://mirror.klaus-uwe.me/apache//httpd/httpd-2.4.46.tar.bz2

关于java - 在构建和签名后修改或自定义安装程序的可能方法有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67054571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com