如何在MSbuild中添加预生成活动以验证签名过程?
我们正在使用Msbuild构建我们的Wix项目。由于各种问题,wix中指定的程序集有几次只是延迟签名。当它安装在GAC中时,它失败了 在wix中是否有任何方法将强名称签名验证作为预构建活动进行验证 我正在使用如何在MSbuild中添加预生成活动以验证签名过程?,msbuild,wix,wix3.5,strongname,msbuild-4.0,Msbuild,Wix,Wix3.5,Strongname,Msbuild 4.0,我们正在使用Msbuild构建我们的Wix项目。由于各种问题,wix中指定的程序集有几次只是延迟签名。当它安装在GAC中时,它失败了 在wix中是否有任何方法将强名称签名验证作为预构建活动进行验证 我正在使用sn-vf“assembly”进行强名称验证 我只想对将打包在wix msi中的DLL(换句话说,wxs文件中指定的程序集)执行强名称验证 如何进行msbuild? 快速解决方案是添加一个调用sn.exe的BeforeBuild事件: 打开.wixproj文件并添加: <Target
sn-vf“assembly”
进行强名称验证
我只想对将打包在wix msi中的DLL(换句话说,wxs文件中指定的程序集)执行强名称验证
如何进行msbuild?- 快速解决方案是添加一个调用sn.exe的BeforeBuild事件:
.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>
要使用它,必须添加对扩展包部件的引用:
<PropertyGroup>
<ExtensionTasksPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common')">$(MSBuildProjectDirectory)\..\..\Common</ExtensionTasksPath>
</PropertyGroup>
<UsingTask AssemblyFile="$(ExtensionTasksPath)\MSBuild.ExtensionPack.dll" TaskName="MSBuild.ExtensionPack.Framework.Signing"/>
$(MSBuildProjectDirectory)\..\..\Common
感谢buddy提供的宝贵信息。但通常在构建中,人们不会直接更改项目文件。他们将有单独的脚本,其中他们将提到wixproj的列表。为项目构建的wixproj数量可能很大,编辑每个文件并不实际。我提供了一个可能的解决方案。当然,您可以将BeforeBuild部分带到主构建脚本中。谢谢,伙计。我会尝试,当我完成,你们可以添加它作为答案的一部分。一旦我测试了它,我将接受它作为应答器,在这种情况下,我需要指定每个dll。Wxs文件将包含要作为msi一部分的DLL列表。这需要通过构建脚本获得,并进行验证。您需要解析wxs,查找文件
元素,并记录所有源
值。您可以使用PowerShell。