Visual Studio 2008允许我声明一个命令并将其附加到项目的post-build事件.像很多开发人员一样,我经常使用xcopy文件到应用程序输出目录.
我正在开展一个项目,我需要将文件从两个不同的地方xcopy文件复制到两个不同的目的地,所有这些都在一个项目中.换句话说,我需要从同一个构建后事件中调用两个不同的xcopy命令.看起来后期构建事件只需要一个命令,如果我需要调用多个命令,我将不得不将命令放在*.bat文件中并从构建后事件中调用它.
这是正确的,还是有更简单的方法从后构建事件中调用两个命令?在此先感谢您的帮助.
如果以下URL不可用,我可以在设置创作工具中使用哪个其他时间戳URL?我得到的具体错误是:SignTool Error: The specified timestamp server either could not be reached or returned an invalid response.
有许多站点可以解释如何signtool.exe在.pfx证书文件上运行,该文件归结为:
signtool.exe sign /f mycert.pfx /p mypassword /t http://timestamp.server.com \
/d "My description" file1.exe file2.exe
Run Code Online (Sandbox Code Playgroud)
我有一个持续集成的CI流程设置(使用TeamCity),它像大多数CI流程一样,完成所有工作:检查源代码,编译,签署所有.exes,将软件包签入安装程序,然后签署安装程序.exe.目前有3个构建代理程序,运行相同的VM,其中任何一个都可以运行此过程.
为了实现这一目标,就安全性而言,我做了一些Bad Things(TM):.pfx文件在源代码管理中,并且它的密码在构建脚本中(也在源代码管理中).这意味着任何能够访问源代码存储库的开发人员都可以获取pfx文件并执行他们喜欢的任何恶意内容.(我们是一个相对较小的开发商店,相信每个人都可以访问,但显然这仍然不好).
我能找到"正确"做到这一点,就是你:
虽然我可以看到这个安全性的优点..这是一个非常繁重的过程,并且在时间方面很昂贵(运行此过程,安全地保留证书备份,确保代码签名机器处于工作状态等) ).
我确信有些人会跳过步骤,只需手动签署存储在他们个人系统上的证书的文件,但这仍然不是很好.
它也与安装程序中使用的签名文件(也由构建服务器构建)不兼容 - 当您安装了具有UAC提示以获得管理员访问权限的.exe时,这一点很重要.
我更关心的是没有向用户提供可怕的"不受信任的应用程序"UAC提示,而不是证明它是我的公司.同时,将私钥和密码存储在每个开发人员(以及QA和高级技术支持)都可以访问的源代码存储库中显然不是一个好的安全实践.
我想要的是CI服务器在构建过程中仍然像今天一样签名,但没有密码(或证书的私钥部分)可供访问源代码存储库的每个人访问.
有没有办法将密码保留在构建之外或以某种方式保护?我应该告诉signtool使用证书存储区(我如何使用3个构建代理程序和构建作为非交互式用户帐户运行)?别的什么?
teamcity continuous-integration code-signing authenticode signtool
我们在Visual Studio 2010中有一个项目,它在后期构建事件中运行批处理文件.该批处理从Microsoft SDK调用signtool.exe来对二进制文件进行签名和时间戳.
然而,时间戳服务器(我们使用http://timestamp.verisign.com/scripts/timstamp.dll)由于某种原因往往不可靠,有时会失败.这导致构建失败.
我们实现了更高级的批处理脚本(基于此代码),拆分签名和时间戳,并允许重试时间戳操作(如果失败).
以下是批处理脚本(signfile.bat)的简化版本:
@echo off
REM sign the file...
signtool.exe /f Authenticode.pfx /p PASS %1
if %errorlevel% neq 0 exit /b %errorlevel%
set timestamp_server=http://timestamp.verisign.com/scripts/timstamp.dll
for /L %%a in (1,1,10) do (
REM try to timestamp the file...
signtool.exe timestamp /t %timestamp_server% %1
if errorlevel 0 if not errorlevel 1 GOTO succeeded
REM wait 2 seconds...
ping -n 2 127.0.0.1 > nul
)
REM return an error code...
echo signfile.bat exit code is …Run Code Online (Sandbox Code Playgroud) build-process code-signing visual-studio-2010 errorlevel timestamping
我正在尝试使用Visual Studio 2012 Express为我的appx文件签署Windows应用商店应用程序,但是收到以下错误:
SignTool Error: The specified algorithm cannot be used or is invalid
Run Code Online (Sandbox Code Playgroud)
我正在通过STORE-> Create App Packages菜单运行该过程,因此我无法直接访问SignTool的参数.
起初我以为是因为它使用了我们其他开发人员的自签名证书,所以我改为使用我们的真实证书,但仍然遇到同样的问题.
什么可能导致这个以及如何解决它?
编辑:怀疑问题是我们的普通证书不支持SHA-256,所以我在Visual Studio中创建了一个新的测试证书,但得到了相同的结果.
EDIT2:验证我的appx包中的哈希算法是SHA256,尝试使用以下命令手动运行SignTool:
SignTool sign /a /f My_TemporaryKey.pfx /fd SHA256 /v /debug MyAppPackage.appx
Run Code Online (Sandbox Code Playgroud)
同样的错误,控制台消息中没有有用的信息.
我想用我自己的Authenticode时间戳服务为我的DLL文件加上时间戳.这可能吗?我怎么能实现这个目标?
code-signing ×3
c# ×2
signtool ×2
appx ×1
authenticode ×1
dll ×1
errorlevel ×1
installer ×1
teamcity ×1
timestamping ×1