MSBuildでReleaseビルドを実行したら、その出力ファイルをsigntool.exeで署名します。
発行で生成される実行ファイルにも署名可能です。
- SignTool.exeを自動的に検索
- PFXファイルとパスワードによる署名
- Azure Trust Signingでの署名
- Github Actionsでの署名
- SHA1とSHA256の多重署名 (多重署名可能なファイルの場合のみ)
- Build,Publish,Packに対応
- 複数の出力ファイルの場合の自動選択(exe+dll , exe+msi)
Windows SDKなどでsigntool.exeがインストールされていること。
開発者コマンドプロンプトからsigntoolを参照できること。
インストールおよび参照がない場合に、signtool.exeファイルを別途用意する場合はSignTool_ExePathプロパティに設定すること。
証明書ストアを使用する場合はストアに証明書がインストールされていること。
Azure Trust Signingで署名する場合は プロジェクトに nugetでMicrosoft.Trusted.Signing.Clientをインストールしておくこと
プロジェクトファイル内に追記すると設定変更できます
<Project >
<PropertyGroup>
<SingTool_EnableSign_Build >true</SingTool_EnableSign_Build>
<SingTool_EnableSign_Publish >true</SingTool_EnableSign_Publish>
<SingTool_EnableSign_Nupkg >true</SingTool_EnableSign_Nupkg>
<SignTool_ExePath></SignTool_ExePath>
<SignTool_TimeStampServer></SignTool_TimeStampServer>
<SignTool_Algorithm_SHA1>false</SignTool_Algorithm_SHA1>
<SignTool_Algorithm_SHA256>true</SignTool_Algorithm_SHA256>
<SignTool_AutoSelect_Subject ></SignTool_AutoSelect_Subject>
<SignTool_AutoSelect_Issuer ></SignTool_AutoSelect_Issuer>
<!-- For use PFX and password -->
<SignTool_PFX ></SignTool_PFX>
<SignTool_Password ></SignTool_Password>
<!-- For use Azure Trust Signing -->
<SignTool_Dlib_Dll_Path ></SignTool_Dlib_Dll_Path>
<SignTool_Dlib_MetaJson_Path Condition></SignTool_Dlib_MetaJson_Path Condition>
<!-- https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-sign?WT.mc_id=DT-MVP-5000708 -->
<SignTool_Nupkg_FingerPrint></SignTool_Nupkg_FingerPrint>
<SignTool_Nupkg_SubjectName></SignTool_Nupkg_SubjectName>
<SignTool_Nupkg_StoreName></SignTool_Nupkg_StoreName>
<SignTool_Nupkg_StoreLocation></SignTool_Nupkg_StoreLocation>
<SignTool_Nupkg_Pfx_Path></SignTool_Nupkg_Pfx_Path>
<SignTool_Nupkg_Password></SignTool_Nupkg_Password>
</PropertyGroup>
<ItemDefinitionGroup>
<SignTool_InputFiles Include="filepath1" />
<SignTool_InputFiles Include="filepath2" />
</ItemDefinitionGroup>
<Target Name="Your Target Name" BeforeTargets="Build" >
<ItemDefinitionGroup>
<SignTool_InputFiles Include="filepath3" />
<SignTool_InputFiles Include="filepath4" />
</ItemDefinitionGroup>
</Target>
-
SignTool_ExePath
任意の場所にあるsigntool.exeを使用する場合のパス 指定しない場合は開発者コマンドプロンプトで参照できるsigntool.exeを使用します -
SignTool_TimeStampServer
タイムスタンプに使用するサーバーのurlを指定する 指定しない場合はdigicertのサーバーを使用します -
SignTool_Algorithm_SHA1
trueに設定するとSHA1で署名する -
SignTool_Algorithm_SHA256
trueに設定するとSHA256で署名するSHA1とSHA256を同時に有効にすると多重署名します
-
SignTool_InputFiles 追加で署名したいファイルがある場合はIncldueでパスを指定する。
プロジェクトファイルが評価される前にファイルが存在しない場合は、ビルド前に実行されるTarget内で指定する必要があります
-
.exe
-
.dll
-
.ocx
-
.scr
-
.sys
-
.cab
-
.cat
-
.efi
-
PE形式のファイル
- .msi
- .ps1
- .vbs
- .vbe
- .js (JScript)
- .msix
- .msixbundle
- .appx
- .appxbundle