如何为 Windows 10安装 SignTool.exe

如何在 VisualStudio2015中为 Windows10安装 SignTool.exe? 我试图构建我的项目,但程序抛出了一个错误:

签名时发生错误: 未找到 SignTool.exe。

191808 次浏览

As per the comments in the question... On Windows 10 Signtool.exe and other SDK tools have been moved into "%programfiles(x86)%\Windows Kits\".

Windows10上标志工具的典型路径。

  • 32位 = “ c: Program Files (x86) Windows Kit 10 bin x86 signtool.exe”
  • 64位 = “ c: Program Files (x86) Windows Kit 10 bin x64 signtool.exe”

用于 SDK 8.0和8.1的工具也位于“ Windows Kit”文件夹中。

如果你正在使用 VS Express 2015,只需要进入你的控制面板—— > 程序和特性—— > 选择 VS 2015—— > 点击更改,然后在 VS Express 安装程序中选择“修改”—— > 选择发布工具,然后完成。一旦安装程序完成了更改,您将能够创建安装程序。

您需要安装 Windows10SDK。

  1. VisualStudio2015Update1已经包含它,但默认情况下没有安装它。您应该进入控制面板-> 程序和功能,找到 Microsoft Visual Studio 2015并选择“更改”。

VisualStudio2015安装将启动。选择“修改”。

在 Visual Studio 组件列表中找到“ Universal Windows App Development Tools”,打开子项列表并选择“ Windows 10 SDK (10.0.10240)”。

VS2015更新1安装中的 Windows10 SDK

  1. 当然,您可以直接从 Microsoft 安装 Windows10SDK: https://go.microsoft.com/fwlink/?LinkID=698771

正如 josant 已经写过的-当安装完成时,你会在文件夹中找到 SignTool.exe:

  • X86-> c: Program Files (x86) Windows Kit 10 bin x86
  • X64-> c: Program Files (x86) Windows Kit 10 bin x64

我做了一个修改与控制面板,程序和功能的 VisualStudio。SDK 一开始并不明显,所以我安装了通用工具,你瞧,它确实包含了 SDK 更新3。

您应该进入控制面板-> 程序和功能,找到 Microsoft Visual Studio 2015并选择“更改”。 VisualStudio2015安装将启动。选择“修改”。

在 VisualStudio 组件列表中,打开子项列表并选择“ ClickOnce 发布工具”和“ Windows10SDK”。

地点:

C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe

如果你想要 SignTool 并且真的想要最小化安装,这里有一个方法,我只是逆向工程我的方法:

  1. https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk下载 .iso文件(当前下载链接是 http://go.microsoft.com/fwlink/p/?LinkID=2022797) .exe下载 没用的,因为它是一个在线安装程序,在运行时下拉它的依赖项。
  2. 使用诸如 7比0之类的工具解压 .iso
  3. Install the Installers/Windows SDK Signing Tools-x86_en-us.msi file - it's only 388 KiB large. For reference, it pulls in its files from the following .cab files, so these are also needed for a standalone install:
    • 4c3ef4b2b1dc72149f979f4243d2accf.cab(339KiB)
    • 685f3d4691f444bc382762d603a99afc.cab(1002KiB)
    • e5c4b31ff9997ac5603f4f28cd7df602.cab(389KiB)
    • e98fa5eb5fee6ce17a7a69d585870b7c.cab(1.2 MiB)

好了,现在您将拥有 signtool.exe文件和 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64中的同伴(如果您需要另一个 CPU 架构,则用 x86armarm64替换 x64)


如果想在 CI 场景中使用它,也可以将 signtool.exe和这个文件夹中的其他文件提交到版本控制存储库中。我试过了,看起来效果不错。

(All files are probably not necessary since there are also some other .exe tools in this folder that might be responsible for these dependencies, but I am not sure which ones could be removed to make the set of files even smaller. Someone else is free to investigate further in this area. :) I tried to just copy signtool.* and that didn't work, so at least some of the other files are needed.)

Here's where you'll find it:

C:\Program Files (x86)\Windows Kits\10\App Certification Kit

截图:


enter image description here

在2019年,这是微软关于如何获得这个工具的最新链接:

SignTool 工具是一个命令行工具,用于对文件进行数字签名, 验证文件或时间戳文件中的签名 关于为什么签名文件很重要,请参阅代码介绍 该工具安装在 Microsoft 的 Bin 文件夹中 视窗软件开发工具包(SDK)安装路径。

SignTool 作为 WindowsSDK 的一部分可用,您可以 从 https://go.microsoft.com/fwlink/p/?linkid=84091下载。

我只需要 signtool,所以我选择了我想到的最小值,signtool.exe 现在在 C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe

Installation selection

Microsoft article link: Https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool

它可以在很多很多地方使用,这取决于安装的是什么: 在我的机器上,除了 v6.0 A SDK 版本外,其他版本都支持/fd 选项。

enter image description here

SignTool 作为 Windows SDK 的一部分(VisualStudio 社区2015附带)可用。确保在安装 VisualStudio2015期间从功能列表中选择“ ClickOnce Publishing Tools”以获取 SignTool。

ClickOnce Publishing Tools

一旦安装了 VisualStudio,就可以从 VisualStudio 命令提示符运行 signtool命令。

默认情况下(在 Windows10上) SignTool 将安装在:

  • C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe

只需要从 winsdksetup.exe (与上面提到的 windows sdk iso 在同一个地址可用)安装 signingtools,这是一个选项,可以直接从我工作的 Dockerfile: 运行 powershell Start-Process winsdksetup.exe-ArgumentList’/Features OptionId. SigningTools’,’/q’,’/ceip off’,’/nostart’,-NoNewWindow-Wait

so if you're in windows then that'd be: Exe/性能 OptionId. SigningTools

Winsdksetup/h 为您提供了选项,所以我不会在这里总结它们。 I include the dockerfile snippet, as that is what i started my day looking for the solution for.

2020年底最佳解决方案:

点击这里下载 Windows 10 SDK:
Https://go.microsoft.com/fwlink/?linkid=698771

In setup, choose only Windows 应用程序认证应用程序 (it's 只有 184 MB)

enter image description here

You can find signtool.exe here:
%PROGRAMFILES(X86)%\Windows Kits\10\bin\x64

干杯!

2021年的另一个答案。

You might not need Windows SDK at all. If you have VS-2019 installed, you might already have signtool in C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe

注意: 这个特别的 signtool版本(与 Windows SDK 版本相比)的好处是它是自包含的,并且不需要它旁边所有的 dll (mssign32.dllwintrust.dll等,通常位于 Windows SDK 文件夹中)。

You can even add this file to your source code repo (just one file), since this tool hasn't changed since 2016.

另外,即使没有在 VisualStudioCommunityEdition 中安装“ ClickOnce 发布”组件,我也有这个 signtool。

For me in 2021 the signtool.exe was here: "C:\Program Files (x86)\Windows Kits\10\bin\x64" or in: x86

and not under: C:\Program Files (x86)\Windows Kits\10\App Certification Kit 即使我有这个文件夹,可能在它的文件。

我在一个限制性的 Azure DevOps 管道环境中使用这个工具时遇到了一个问题,在这个环境中我甚至不能扩展 PATH或者从 ADO build 目录之外的绝对路径调用任何工具,这意味着在这个例子中不能从 C:\Program Files (x86)\调用任何工具

我的解决方案是将它打包为 ADO Piplines 的 Library-> Secure Files部分中的 安全文件,允许我的管道通过其安全设置访问该文件,然后将其作为构建任务下载,并通过 powershell 任务运行该文件。

Secure files location

在下面的示例中,我只是使用 /?命令查询帮助。只要将其替换为您想使用的任何命令即可。

      - task: DownloadSecureFile@1
displayName: "Signtool Download"
name: MSSignTool
inputs:
secureFile: 'signtool.exe'


- task : PowerShell@2
displayName: "Run Signtool"
inputs:
targetType: "inline"
script: $(MSSignTool.secureFilePath) /?

警告1: 我不确定 signtool.exe独立工作需要什么依赖关系,或者它是否有任何依赖关系。Windows10SDK 和 ADK 已经安装在这个构建环境中。如果查询帮助导致工具失败或崩溃,请确保安装了其中一个或两个工具。希望您能够访问类似 choco的东西来安装任何丢失的依赖项。

警告2: Be careful if copying those code segments。ADO 对于动态空格非常严格,所以如果间距不对,它会阻塞整个管道文件,直到您将间距调整到正确的位置。

您不必安装 Signtool,它可能已经在那里了。

转到 C:\Program Files (x86)\并搜索 signtool.exe。在我的系统中,我在 C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool下面找到了它

无论您使用哪个版本的 Windows,上面的标志工具将解决您的目的。