gpt4 book ai didi

visual-studio-2010 - 通过 TFS Build 2008 签署 ClickOnce list ?

转载 作者:行者123 更新时间:2023-12-04 15:15:14 26 4
gpt4 key购买 nike

我在弄清楚如何从 TFS Build 为我的应用程序“签署 ClickOnce list ”时遇到问题。

我通过选中“签署 ClickOnce list ”复选框并从文件中选择我们的代码签名 key ,在 VS 2010 中配置了我的签名页面,如下面的屏幕截图所示:

Signing page in VS 2010

现在,当我从 VS 2010 发布应用程序时, list 似乎已成功签名:

security warning showing good certificate

但是,当我尝试从 TFS Build 构建应用程序时,它似乎没有尝试对 list 进行签名。事实上,甚至没有错误消息表明某些事情失败了。

我试图设置 TFSBuild.proj 文件,以便我的构建服务器知道证书并且我希望签署我的 list ,但我不知道如何做到这一点。

我尝试了以下方法:

<CustomPropertiesForBuild>SignManifests=true;ManifestCertificateThumbprint=<thumbprint goes here></CustomPropertiesForBuild>

但这似乎没有任何区别。 (也不会产生错误)。

注:我对强命名我的程序集不感兴趣;只是 signing my code .

有谁知道如何做到这一点?有没有人从 TFS Build 成功部署过 ClickOnce 应用程序?

最佳答案

到目前为止,我能够通过 TFSBuild 对我的代码进行签名的唯一方法是启动命令行代码签名工具。这主要包括三个步骤:

  • 将证书导入到构建机器上,同时以用于运行 TFSBuild 的任何 TFSService 帐户登录。导入证书后,您需要进入证书管理器以获取其指纹(我认为它在证书管理器 UI 中称为“哈希”)。
  • 将目标添加到您的 .csproj/.wixproj/.whateverproj 以定位 signtool.exe 并运行它:
    <Target Name="SignOutput">
    <PropertyGroup>
    <WindowsSdkDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\@CurrentInstallFolder)</WindowsSdkDir>
    <WindowsSdkDir Condition="'$(WindowsSdkDir)' != '' and !HasTrailingSlash('$(WindowsSdkDir)')">$(WindowsSdkDir)\</WindowsSdkDir>
    <SignToolPath>$(WindowsSdkDir)bin\signtool.exe</SignToolPath>
    <Hash>...</Hash>
    <TsUrl>http://timestamp.verisign.com/scripts/timstamp.dll</TsUrl>
    </PropertyGroup>
    <ItemGroup>
    <SignableFiles Include="$(TargetDir)\Setup.msi" />
    <SignableFiles Include="$(TargetDir)\Data.cab" />
    </ItemGroup>
    <ResolveKeySource CertificateThumbprint="$(Hash)">
    <Output TaskParameter="ResolvedThumbprint" PropertyName="LocatedThumbprint"/>
    </ResolveKeySource>
    <Exec Condition="'$(LocatedThumbprint)' != '' and Exists('$(SignToolPath)')" ContinueOnError="true" Command="'$(SignToolPath)' sign /q /sha1 $(LocatedThumbprint) /t $(TsUrl) '%(SignableFiles.Identity)'" />
    </Target>
  • 在适当的时候调用你的新目标;我们只签署发布版本,所以我们这样做:
    <Target Name="AfterBuild">
    <CallTarget Targets="SignOutput" Condition="'$(ConfigurationName)' == 'Release'" />
    </Target>

  • 此方法也适用于开发人员机器,假设他们安装了适当的 SDK 工具。如果他们不这样做,它将跳过签名步骤,这对我们来说效果很好。

    关于visual-studio-2010 - 通过 TFS Build 2008 签署 ClickOnce list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6059797/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com