2012-01-04 4 views
1

Мы используем Msbuild для создания наших проектов Wix. Из-за различных проблем несколько раз сборки, указанные в wix, были только затянуты. Когда он был установлен в GAC, он не удался.Как добавить операцию создания в MSbuild для проверки процесса подписи?

Есть ли способ проверить подлинность подписи подписи в качестве предварительной работы в wix?

Я использую sn -vf "assembly", чтобы сделать сильное имя проверка.

Я хочу сделать сильной проверки имя только для библиотек DLL, которые будут упакованы внутри WIX MSI (другими словами, собраний, указанные в файле WXS)

Как сделать это MSBuild?

ответ

2
  • Быстрое решение добавляет BeforeBuild событие, которое вызывает Sn.exe:

Откройте файл .wixproj и добавить:

<Target Name="BeforeBuild"> 
<ItemGroup> 
    <AssemblyToSign Include="C:\SignedAssembly1.dll"/> 
    <AssemblyToSign Include="C:\SignedAssembly2.dll"/>  
</ItemGroup> 
    <Exec Command="sn -q -vf %(AssemblyToSign.Identity)" /> 
</Target> 

Это будет не в состоянии сборки в один раз сборка не удалось проверить.


  • Другим решением является использование MSBuild Extension Pack в Signing класс:

Еще раз, это будет не в состоянии вашей сборки на неудачной проверки:

<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"/> 
+0

Спасибо, друг за приятную информацию. Но обычно в сборке люди не будут напрямую изменять файл проекта. У них будет отдельный скрипт, в котором они упомянут список wixproj.Number wixproj для сборки для проекта может быть огромным и редактирование каждого файла нецелесообразно – Samselvaprabu

+0

Я представил возможное решение. Конечно, вы можете взять часть BeforeBuild в свой основной скрипт сборки. – KMoraz

+0

спасибо приятелю. Я попробую и когда я закончу, что вы можете добавить его как часть ответа. Как только я протестировал его, я буду принимать его как ответ – Samselvaprabu

Смежные вопросы