如何为 Windows 10 安装 SignTool.exe

How to install SignTool.exe for Windows 10

如何在 Windows 10 Visual Studio 2015 中安装 SignTool.exe? 我尝试构建我的项目,但程序抛出错误:

Error An error occurred while signing: SignTool.exe not found.

根据问题中的评论...在 Windows 10 Signtool.exe 和其他 SDK 工具已移至 "%programfiles(x86)%\Windows 套件\".

Windows10.

上 signtool 的典型路径
  • 32位="c:\Program Files (x86)\Windows Kits\bin\x86\signtool.exe"
  • 64位="c:\Program Files (x86)\Windows Kits\bin\x64\signtool.exe"

SDK 8.0 和 8.1 的工具也位于 "Windows Kits" 文件夹中。

如果您使用的是 VS Express 2015,只需转到您的控制面板 --> 程序和功能 --> select vs 2015 --> 单击更改,然后在 VS Express 安装程序中 select 'Modify' --> select 发布工具,完成。安装程序完成更改后,您将能够创建安装程序。

您需要安装Windows 10 SDK。

  1. Visual Studio 2015 Update 1 已包含它,但默认情况下未安装。您应该转到控制面板 -> 程序和功能,找到 Microsoft Visual Studio 2015 和 select "Change".

Visual Studio 2015 安装程序将开始。 Select "Modify".

在Visual Studio组件列表中找到"Universal Windows App Development Tools",打开子项列表和select"Windows 10 SDK (10.0.10240)".

Windows 10 SDK in VS 2015 Update 1 Setup

  1. 当然可以直接从 Microsoft 安装 Windows 10 SDK:https://go.microsoft.com/fwlink/?LinkID=698771

正如 josant 已经写的那样 - 安装完成后,您会在文件夹中找到 SignTool.exe:

  • x86 -> c:\Program Files (x86)\Windows Kits\bin\x86
  • x64 -> c:\Program Files (x86)\Windows Kits\bin\x64\

我使用控制面板、程序和功能中的 Visual Studio 进行了修改。 SDK 一开始并不明显,所以我安装了 Common Tools,其中包含 SDK Update 3。

您应该转到“控制面板”->“程序和功能”,找到 Microsoft Visual Studio 2015 和 select "Change"。 Visual Studio 2015 年设置将开始。 Select "Modify".

在 Visual Studio 组件列表中,打开 sub-items 和 select "ClickOnce Publication Tools" 和 "Windows 10 SDK" 的列表。

地点:

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

如果您想要 SignTool 并且真的想最小化安装,这是我通过逆向工程实现的一种方法:

  1. https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk (current download link is http://go.microsoft.com/fwlink/p/?LinkID=2022797 下载 .iso 文件) .exe 下载 将不起作用 ,因为它是一个在线安装程序,会下拉其运行时的依赖关系。
  2. 使用 7-zip 等工具解压 .iso
  3. 安装 Installers/Windows SDK Signing Tools-x86_en-us.msi 文件 - 它只有 388 KiB。作为参考,它从以下 .cab 文件中提取文件,因此独立安装也需要这些文件:
    • 4c3ef4b2b1dc72149f979f4243d2accf.cab (339 KiB)
    • 685f3d4691f444bc382762d603a99afc.cab (1002 KiB)
    • e5c4b31ff9997ac5603f4f28cd7df602.cab (389 KiB)
    • e98fa5eb5fee6ce17a7a69d585870b7c.cab (1.2 MiB)

我们开始了 - 您现在将在 C:\Program Files (x86)\Windows Kits\bin.0.17763.0\x64 中拥有 signtool.exe 文件和同伴(将 x64 替换为 x86armarm64 如果你需要它用于另一个 CPU 架构。)


也可以将 signtool.exe 和此文件夹中的其他文件提交到您的版本控制存储库中,例如CI 场景。我已经试过了,它似乎工作正常。

(All 文件可能不是必需的,因为此文件夹中还有一些其他 .exe 工具可能负责这些依赖项,但我不确定可以删除哪些文件以使文件集更小。其他人可以自由地在这方面进行进一步调查。:)我试图只复制 signtool.* 但那没有用,所以至少有一些需要其他文件。)

您可以在此处找到它:

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

截图:


在 2019 年,这是 Microsoft 最近的一篇 link 关于如何获取此工具的文章:

The SignTool tool is a command-line tool that digitally signs files, verifies signatures in files, or time stamps files. For information about why signing files is important, see Introduction to Code Signing. The tool is installed in the \Bin folder of the Microsoft Windows Software Development Kit (SDK) installation path.

SignTool is available as part of the Windows SDK, which you can download from https://go.microsoft.com/fwlink/p/?linkid=84091.

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

微软文章link: https://docs.microsoft.com/en-us/windows/win32/seccrypto/signtool

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

SignTool is available as part of the Windows SDK (which comes with Visual Studio Community 2015). Make sure to select the "ClickOnce Publishing Tools”从安装 Visual Studio 2015 期间的功能列表中获取 SignTool。

安装 Visual Studio 后,您可以 运行 来自 Visual Studio Command Promptsigntool 命令。

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

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

仅安装来自 winsdksetup.exe 的签名工具(与上述 windows sdk iso 相同 url 可用)这是一个选项,直接从 Dockerfile i '工作于: 运行 powershell Start-Process winsdksetup.exe -ArgumentList '/features OptionId.SigningTools', '/q', '/ceip off', '/norestart', -NoNewWindow -Wait

因此,如果您在 windows 中,则为: winsdksetup.exe/特征OptionId.SigningTools

winsdksetup /h 给了你选项,所以我不会在这里总结它们。 我包含了 dockerfile 片段,因为这是我开始寻找解决方案的一天。

2020 年底最佳解决方案:

只需从 Microsoft 下载 Windows 10 SDK:
https://go.microsoft.com/fwlink/?LinkID=698771

在设置中,仅选择 Windows App Certification App 184 MB)

您可以在此处找到 signtool.exe:
%PROGRAMFILES(X86)%\Windows Kits\bin\x64

干杯!

2021 年的另一个答案。

您可能根本不需要 Windows SDK。如果您安装了 VS-2019,您可能已经在 C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe

中安装了 signtool

注意:这个特殊的 signtool 版本(与 Windows SDK 版本相比)的优点在于它是独立的,并且不需要旁边的所有 dll(mssign32.dllwintrust.dll 等,通常位于 Windows SDK 文件夹中)。

您甚至可以将此文件添加到您的源代码存储库(仅一个文件),因为此工具自 2016 年以来未曾更改。

P.S。即使我的 Visual Studio 社区版中没有安装“ClickOnce 发布”组件,我也有这个 signtool。

对于 2021 年的我来说,signtool.exe 在这里:“C:\Program Files (x86)\Windows Kits\bin\x64”或在:x86

而不是:C:\Program Files (x86)\Windows Kits\App 认证工具包 即使我有这个文件夹并且里面可能有文件。

我 运行 在限制性的 Azure DevOps Pipelines 环境中使用此工具遇到问题,我什至无法扩展 PATH 或从 ADO 构建之外的绝对路径调用任何工具目录,在这种情况下意味着 C:\Program Files (x86)\

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

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

      - 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 需要哪些依赖项才能独立工作,或者它是否有任何依赖项。 Windows 10 SDK 和 ADK 已安装在此构建环境中。如果查询帮助导致工具失败或崩溃,请确保安装了其中一个或两个。希望您可以访问 choco 之类的东西来安装任何缺少的依赖项。

警告 2:复制这些代码段时要小心。 ADO 对动态空白非常严格,因此如果您的间距关闭,它将阻塞整个管道文件,直到您将间距调整到正确的位置。