Я пытаюсь создать файл .exe
, который будет запускать скрипт powershell, для которого мне нужно установить различные компоненты приложения. Я работаю над шагом 1 из 4, чтобы установить все это приложение, и хочу поместить его в один пакет. С этим не все в порядке. Я использую Ps1 для Exe по f2ko. Там нет документации, которую я могу найти на программное обеспечение, но он делает то, что я хочу. Проблема заключается в упакованных файлах и способах их запуска. Я сталкиваюсь с парой вопросов. Основная проблема, кажется, связана с Start-Process
, когда exe
работает, я получаю сообщение об ошибке
Start-Process : This command cannot be run completely because the system cannot find all the information required.
At C:\Users\adminjp\AppData\Local\Temp\2605.tml\2606.tmp\2607.ps1:9 char:16
Остальная часть ошибки скрыта в строке состояния установщика. Строка состояния работает, но процесс - нет. Первоначально у меня была проблема с ExecutionPolicy
, но она устраняется путем ручного изменения значения для запуска сценария. У меня были многочисленные проблемы с запуском этого скрипта, и у меня заканчиваются статьи в Интернете, которые я не читал. Вот мой сценарий powershell:
Set-ExecutionPolicy -Force remotesigned
$NETfile = "env:p2eincfilepath\1 - NDP471-KB4033342-x86-x64-AllOS-ENU.exe"
$NETargs = "/q"
$SQLfile = "env:p2eincfilepath\setup.exe"
$SQLargs = "/ConfigurationFile=`".\ConfigurationFile_SQLExpress.ini`""
function Show-Progress ($file, $arguments, $component){
$process = Start-Process $file $arguments -PassThru
for($i = 0; $i -le 100; $i = ($i + 1) % 100)
{
Write-Progress -Activity "Installer" -PercentComplete $i -Status "Installing $component"
Start-Sleep -Milliseconds 100
if ($process.HasExited) {
Write-Progress -Activity "Installer" -Completed
break
}
}
}
Show-Progress $NETfile $NETargs ".NET 4.7.2"
Show-Progress $SQLfile $SQLargs "SQL Express"
Программа, которая преобразует этот скрипт в exe
, - это то, что устанавливает место извлечения, и, насколько мне известно, я не могу установить это. Приложенный снимок экрана с их объяснением того, как ссылаться на вложенные файлы:
Я использую env:p2eincfilepath
, потому что это метод powershell для доступа к переменным среды, и приложение, похоже, создает или использует переменную среды. Пожалуйста, дайте мне знать, если вам нужна какая-либо другая информация. Ps1, кажется, работает правильно, если я запускаю его непосредственно из powershell и помещаю файлы в корневой каталог, вызывая их с помощью ./
. Мне бы очень хотелось, чтобы эта функция использовалась, так как это то, что дает мне строку состояния, позволяющую пользователю знать, что устанавливается: