签名的 ClickOnce 应用抛出 'Unknown Publisher' 和 Windows 10
Signed ClickOnce app throwing 'Unknown Publisher' with Windows 10
我们的绝大多数业务用户 运行 Windows 7,我们的 ClickOnce 应用程序安装、更新和 运行s 应该没有任何弹出警告。
同一应用程序在 Windows 10
上抛出以下内容
当然 'More info' 似乎是文本的一部分,而不是您可以单击的内容,“不要 运行”似乎是唯一的选项
如果您点击 'More Info',它会显示发布者未知(尽管它在更新时显示得很好!!!)
代码签名证书有效,并且在 Win 7 机器上仍然 installs/updates 和 运行 没有警告。
知道他们现在改变了什么吗?
谢谢
我假设您正在使用签名选项卡 - 但它只签署 setup.exe - 而不是实际的 application.exe 文件。这样,您在安装应用程序时不会收到 "warning" 提示,但会在 运行 时收到提示。您需要单独签署 application.exe - Visual Studio 中没有 UI,您需要使用 PostBuild 任务:
我不确定为什么这在 Windows 7 中可以正常工作 - 在我的情况下 Win7 不能正常工作 - 但根据您的评论,这可能是解决方案...
非常感谢 avs099 - 已将其标记为答案,因为它是我迄今为止最接近的答案!我最终使用了 BeforePublish..
我使用 IE11 将证书导出到一个目录(Internet 选项 > 内容 > 证书 > 导出),然后将其复制并粘贴到项目中。然后卸载项目并在
之间添加以下内容
<Target Name="BeforePublish">
</Target>
标签
<Exec Command=""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "MyCert_2016.pfx" /p "MySecretPassword" /t http://timestamp.comodoca.com/authenticode "C:\Users\MyName\My Documents\Visual Studio 2015\Projects\MyProject\MyProject\obj\Release\My.exe"" />
然后重新加载项目 - 已发布,现在它在 Windows 10 上运行,没有任何异议 - 就像它从蓝色警告变为红色警告一样:-(
在 avs099 和 this link I made sense out of it after lots of build errors - this site 的回答之间提供了信息,但将证书放在完整路径中,而不是相对路径
为了 2021 年面临此问题的任何人的利益:
不要使用 Comodo/Sectigo 时间戳服务器。
当我切换到 Digicert 的服务器时,我的问题消失了(使用“http://timestamp.digicert.com”代替时间戳服务器 URL)。
或者,您可以将时间戳服务器留空 -- 但如果没有加密时间戳,您的代码签名将在证书过期时失效。 (有了时间戳,签名将保持有效,只要它在创建时间戳时有效。)
详情请见 。
我看到您正在使用 sha1 证书并且 sha1 is deprecated because of these reasons. If you have a sha256 cert you can use "http://timestamp.comodoca.com/?td=sha256". See more info...
万一有人在 2022 年使用谷歌搜索时来到这里:
我更新了我的证书 (SHA384) 并收到了相同的“未知发布者”警告。
我尝试了多个时间戳服务器、全新项目,但 ClickOnce 发布始终使用 sha1 摘要来签署 exe、设置和清单。
即使是最新版本的 VS2019 也无法正常工作 (MSBuild 16),所以我不得不升级到 VS2022 Community。
提示:Sectigo 时间戳服务器 http://timestamp.sectigo.com 似乎工作正常
我们的绝大多数业务用户 运行 Windows 7,我们的 ClickOnce 应用程序安装、更新和 运行s 应该没有任何弹出警告。
同一应用程序在 Windows 10
上抛出以下内容当然 'More info' 似乎是文本的一部分,而不是您可以单击的内容,“不要 运行”似乎是唯一的选项
如果您点击 'More Info',它会显示发布者未知(尽管它在更新时显示得很好!!!)
代码签名证书有效,并且在 Win 7 机器上仍然 installs/updates 和 运行 没有警告。
知道他们现在改变了什么吗?
谢谢
我假设您正在使用签名选项卡 - 但它只签署 setup.exe - 而不是实际的 application.exe 文件。这样,您在安装应用程序时不会收到 "warning" 提示,但会在 运行 时收到提示。您需要单独签署 application.exe - Visual Studio 中没有 UI,您需要使用 PostBuild 任务:
我不确定为什么这在 Windows 7 中可以正常工作 - 在我的情况下 Win7 不能正常工作 - 但根据您的评论,这可能是解决方案...
非常感谢 avs099 - 已将其标记为答案,因为它是我迄今为止最接近的答案!我最终使用了 BeforePublish..
我使用 IE11 将证书导出到一个目录(Internet 选项 > 内容 > 证书 > 导出),然后将其复制并粘贴到项目中。然后卸载项目并在
之间添加以下内容<Target Name="BeforePublish">
</Target>
标签
<Exec Command=""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "MyCert_2016.pfx" /p "MySecretPassword" /t http://timestamp.comodoca.com/authenticode "C:\Users\MyName\My Documents\Visual Studio 2015\Projects\MyProject\MyProject\obj\Release\My.exe"" />
然后重新加载项目 - 已发布,现在它在 Windows 10 上运行,没有任何异议 - 就像它从蓝色警告变为红色警告一样:-(
在 avs099 和 this link I made sense out of it after lots of build errors - this site 的回答之间提供了信息,但将证书放在完整路径中,而不是相对路径
为了 2021 年面临此问题的任何人的利益:
不要使用 Comodo/Sectigo 时间戳服务器。
当我切换到 Digicert 的服务器时,我的问题消失了(使用“http://timestamp.digicert.com”代替时间戳服务器 URL)。
或者,您可以将时间戳服务器留空 -- 但如果没有加密时间戳,您的代码签名将在证书过期时失效。 (有了时间戳,签名将保持有效,只要它在创建时间戳时有效。)
详情请见
我看到您正在使用 sha1 证书并且 sha1 is deprecated because of these reasons. If you have a sha256 cert you can use "http://timestamp.comodoca.com/?td=sha256". See more info...
万一有人在 2022 年使用谷歌搜索时来到这里:
我更新了我的证书 (SHA384) 并收到了相同的“未知发布者”警告。
我尝试了多个时间戳服务器、全新项目,但 ClickOnce 发布始终使用 sha1 摘要来签署 exe、设置和清单。
即使是最新版本的 VS2019 也无法正常工作 (MSBuild 16),所以我不得不升级到 VS2022 Community。
提示:Sectigo 时间戳服务器 http://timestamp.sectigo.com 似乎工作正常