首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过批处理脚本从visual studio生成后目标执行reg查询。

无法通过批处理脚本从visual studio生成后目标执行reg查询。
EN

Stack Overflow用户
提问于 2019-05-01 22:55:38
回答 1查看 46关注 0票数 0

所以这很奇怪,我不确定该如何解决这个问题。我已经编写了一个小批处理(.bat)例程,用于在构建完Visual Studio解决方案后对程序集进行代码签名。下面是BAT代码:

代码语言:javascript
复制
@echo off
echo.
echo Signing Dlls...
setlocal ENABLEEXTENSIONS

set DLL_PATH=%1
set PFX_PATH="C:\Users\ksobon\source\repos\HOK-Revit-Addins\_cert\archilabCertificate.pfx"
set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\HOK"
set VALUE_NAME="certificatePassword"

for /f "tokens=3" %%a in ('reg query %KEY_NAME% /V %VALUE_NAME% ^|findstr /ri "REG_SZ"') do set PFX_PASS=%%a

echo PFX File Path: %PFX_PATH%
echo PFX Password: %PFX_PASS%
echo DLL File Path: %DLL_PATH%

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\signtool.exe" sign /f %PFX_PATH% /p %PFX_PASS% /t http://timestamp.comodoca.com/authenticode %DLL_PATH%

endlocal

当我像这样从PowerShell调用它时:

.\codeSigning.bat "C:\Users\ksobon\Desktop\Newtonsoft.Json.dll"

我得到了正确的结果,dll得到了签名。这里没有问题。但是,当我将它添加到Visual Studio build目标中时,如下所示:

代码语言:javascript
复制
  <Target Name="CopyFiles" AfterTargets="AfterBuild">
    <Exec Command="&quot;$(SolutionDir)..\_postBuild\codeSigning.bat&quot; &quot;$(TargetPath)&quot;"/>
  </Target>

它在我身上失败了,错误如下:

想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-01 23:16:39

对于其他人来说这是偶然的。这里解释了这个问题:Powershell script from Visual Studio Post-build-event failing

基本上,这与Visual Studio调用PowerShell的版本(x64)不同,而不是我从开始菜单(x86)启动它时得到的版本。解决这个问题的方法是指定在我的调用中直接使用哪个power shell,如下所示:

代码语言:javascript
复制
  <Target Name="CopyFiles" AfterTargets="AfterBuild">
    <Exec Command="&quot;%WINDIR%\SysNative\WindowsPowerShell\v1.0\powershell.exe&quot; &quot;$(SolutionDir)..\_postBuild\codeSigning.bat&quot; &quot;$(TargetPath)&quot;"/>
  </Target> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55938215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档