ps1到Powershell脚本的exe部署,找不到所需的所有信息

时间:2019-04-24 19:16:23

标签: powershell installation

我正在尝试创建一个.exe文件,该文件将运行Powershell脚本,而该脚本必须安装应用程序的各种组件。我正在第4步中进行第1步,以安装整个应用程序,并希望将其放入一个软件包中。事情进展不顺利。我正在使用f2ko将PS1应用于Exe。在该软件上找不到任何文档,但是可以满足我的要求。问题出在打包的文件及其运行方式中。我遇到了几个问题。主要问题似乎与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的程序将设置提取位置,据我所知,我无法对其进行设置。随附的屏幕快照显示了他们如何引用嵌入文件的说明:

enter image description here

我正在使用env:p2eincfilepath,因为这是访问环境变量的强大方法,并且该应用程序似乎在创建或使用环境变量。如果您需要其他信息,请告诉我。如果直接从powershell运行Ps1并将文件放在根目录中,并用./调用它们,Ps1似乎可以正常工作,我真的很想继续使用此功能,因为这就是我的状态栏用户知道正在安装什么:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您需要在env变量前面有一个$符号,以便其填写。

$NETfile = "$env:p2eincfilepath\1 - NDP471-KB4033342-x86-x64-AllOS-ENU.exe"
$NETargs = "/q"
$SQLfile = "$env:p2eincfilepath\setup.exe"
$SQLargs = "/ConfigurationFile=`".\ConfigurationFile_SQLExpress.ini`""