Невозможно выполнить запрос reg от цели сборки post studio через пакетный скрипт - PullRequest
0 голосов
/ 01 мая 2019

Так что это странно, и я не уверен, как решить проблему.Я написал небольшую подпрограмму (.bat) для кодирования подписи сборки, когда я закончу сборку решения Visual Studio.Вот код BAT:

@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 следующим образом:

  <Target Name="CopyFiles" AfterTargets="AfterBuild">
    <Exec Command="&quot;$(SolutionDir)..\_postBuild\codeSigning.bat&quot; &quot;$(TargetPath)&quot;"/>
  </Target>

Это вызывает у меня следующую ошибку:

enter image description here

Идеи?

1 Ответ

0 голосов
/ 01 мая 2019

Для всех, кто остался в этом.Проблема была объяснена здесь: Сценарий Powershell из Visual Studio после сбоя события после сборки

В основном это связано с тем, что Visual Studio вызывает PowerShell, отличную от версии (x64), чемтот, который я бы получил, когда я просто запустил его из меню Пуск (x86).Чтобы исправить это, нужно было указать, какую оболочку питания использовать непосредственно в моем вызове, например:

  <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> 
...