다음과 같은 문제가 발생했습니다 :
NSIS에서 powershell 스크립트를 사용하려고하지만 설치 프로그램을 시작하면 Powershell 창이 팝업되지만 즉시 닫힙니다. 필자가 볼 수있는 것은 powershell이 오류 (빨간색 글자)를 인쇄하지만, 즉시 닫히기 때문에 오류가 무엇인지 알 수 없다는 것입니다.NSIS에서 Powershell을 실행하십시오.
내 모든 스크립트 내가으로 'schtask'당이 XML 파일을 가져 명령 'WHOAMI'의 출력과 결국 "CURRENTPC \ CURRENTUSERNAME"를 대체하여, 템플릿 .XML 파일에 자리 표시를 대체 않습니다 작업 스케줄러.
스크립트를 별도로 실행하면 원하는대로 작동하지만 컴파일 된 설정을 사용하면 설명한 문제가 발생합니다.
물론 해결책을 찾는 데 시간을 할애합니다.
내가 그것을 32 비트에서 실행 있는지 확인하기 위해 내 스크립트에 체크 구축 :
나는 다음 시도했다. 내 .XML 템플릿 내가 ','ExecWait '를 통해 NSIS 내부 NS를 PowerShell을 실행남아있는 경우 예, 64 비트에서 다시 시작
- 나는 패스에 하드'CD '를 한 경우 :: ExecToLog '및'ns :: ExecToStack '
더 이상 무엇을 해야할지 모르겠습니다. 누군가가 도울 수 있기를 바랍니다. 코드를 읽고 싶은 사람들을 위해
: 나는이 NSIS 내부의 스크립트를 사용하는 방법
입니다 :
File ProcessControlTemplateFill.ps1
ExecWait 'powershell -inputformat none -ExecutionPolicy RemoteSigned -File ".\ProcessControlTemplateFill.ps1"'
을 그리고 이것은 내 .ps1입니다-스크립트입니다
#############################################################################
#If Powershell is running the 32-bit version on a 64-bit machine, we
#need to force powershell to run in 64-bit mode .
#############################################################################
if ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
write-warning "Y'arg Matey, we're off to 64-bit land....."
if ($myInvocation.Line) {
&"$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile $myInvocation.Line
}else{
&"$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -file "$($myInvocation.InvocationName)" $args
}
exit $lastexitcode
}
write-host "Main script body"
#############################################################################
#End
#############################################################################
cd C:\R15
$WERBINICH = whoami
ForEach($Datei in ls './sources/ProcessControlTemplate.xml') {
$Zeilen = Get-Content -Path $Datei.Fullname
$ZeilenZähler = 1
foreach($Zeile in $Zeilen)
{
$Zeile = $Zeile -replace 'CURRENTPC\\CURRENTUSERNAME', "$WERBINICH"
Write-Host $Zeile
If($ZeilenZähler -eq 1) {
Out-File -FilePath $Datei.Fullname -InputObject $Zeile -Force
}
Else {
Out-File -FilePath $Datei.Fullname -InputObject $Zeile -Force -Append
}
$ZeilenZähler++
}
}
schtasks /create /f /XML .\sources\ProcessControlTemplate.xml /tn ProcessControl
NSIS 설치 프로그램의 목적은 무엇입니까? 왜 PowerShell 스크립트를 직접 실행하지 않습니까? –
@Bill_Stewart 설치 프로그램이 주요 프로젝트의 일부분이며 내 설정을 사용하는 미래의 "클라이언트"가 수동으로 설치 프로그램을 사용하여 나중에 스크립트를 시작하지 않아도됩니다. – Gluglack
죄송하지만 사용자가 무엇을 요구하는지 이해할 수 없습니다. . –