内部 Inno Setup 安装程序没有与 AppLocker 规则冲突的主安装程序的产品名称

Internal Inno Setup installer does not have product name of main installer which conflicts with AppLocker rule

我正在为 C# 软件创建一个签名安装程序,该软件将 运行 在受 Windows AppLocker 保护的系统中。 AppLocker 规则仅允许在其 Fqbn(完全限定的二进制名称)中具有产品名称 "MyAppName" 的软件自行安装。我购买了证书并使用 Inno Setup 的 signtool 功能对应用程序的 exe 和安装程序进行了签名,效果很好。安装程序和 exe 在其 Fqbn.

中包含正确的产品名称

但是!

安装时,安装程​​序会创建一个自身的临时副本,其 Fqbn 字段中不包含产品名称。不过,原始安装程序确实如此。出版商名称在所述字段中保持不变 ("O=My Company, L=My Town, S=My State, C=DE")。

关于如何解决这个问题有什么想法吗?如何获取安装程序临时副本中的产品名称?

更新

以下是 AppLocker 在客户 PC 上生成的事件日志。

这是安装程序临时副本的日志(已拒绝)。 Fqbn 中缺少产品名称(只有三个反斜杠):

这是软件二进制文件的日志(允许)。那里有产品名称以及二进制文件的名称:

升级到 Inno Setup 6.0.4,它会更新内部安装程序二进制文件的产品名称:

Windows AppLocker publisher conditions are now supported by Setup up to and including the file name level.


旧版 Inno Setup 的先前答案,包括对问题的解释:

我认为 EXE 中没有任何 Fqbn 字段。 Fqbn 可能只是 AppLocker 从其他真实字段构造的字符串,包括 ProductName 字段。我也不认为这个问题与代码签名有任何关系。

此外,AppLocker 阻止的程序不是“自身的临时副本(=installer)”。它是一个完全不同的程序,是 Inno Setup 安装文件夹中 Setup.e32 的副本。它没有任何 ProductName。 Inno Setup 不允许以任何方式自行定制该程序。尽管您应该能够根据需要使用适当的工具自行编辑文件,例如 Resource Hacker. See also .

如果您不想干扰 Inno Setup 安装,您可以通过“滥用”签名过程来修改 EXE。例如,请参阅 editbin 如何用作登录

的一部分