我们正在使用Msbuild来构建我们的Wix项目。由于各种问题,wix中指定的程序集很少被延迟签名。当它安装在GAC中时失败了。
有没有办法在wix中验证强名称签名验证作为预建活动?
我正在使用sn -vf "assembly"
进行强名称验证。
我想仅对将在wix msi中包装的dll进行强名称验证(换句话说,在wxs文件中指定的程序集)
如何做到msbuild?
答案 0 :(得分:2)
打开您的.wixproj
文件并添加:
<Target Name="BeforeBuild">
<ItemGroup>
<AssemblyToSign Include="C:\SignedAssembly1.dll"/>
<AssemblyToSign Include="C:\SignedAssembly2.dll"/>
</ItemGroup>
<Exec Command="sn -q -vf %(AssemblyToSign.Identity)" />
</Target>
一旦程序集验证失败,这将使您的构建失败。
再一次,这将使您的构建失败验证失败:
<Target Name="BeforeBuild">
<ItemGroup>
<AssemblyToSign Include="C:\SignedAssembly1.dll"/>
<AssemblyToSign Include="C:\SignedAssembly2.dll"/>
</ItemGroup>
<MSBuild.ExtensionPack.Framework.Signing
TaskAction="Sign"
ToolPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"
KeyFile="D:\key.snk"
Assemblies="@(AssemblyToSign)" />
</Target>
要使用它,您必须添加对Extension Pack程序集的引用:
<PropertyGroup>
<ExtensionTasksPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common')">$(MSBuildProjectDirectory)\..\..\Common</ExtensionTasksPath>
</PropertyGroup>
<UsingTask AssemblyFile="$(ExtensionTasksPath)\MSBuild.ExtensionPack.dll" TaskName="MSBuild.ExtensionPack.Framework.Signing"/>