我正在尝试创建一个.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
的程序将设置提取位置,据我所知,我无法对其进行设置。随附的屏幕快照显示了他们如何引用嵌入文件的说明:
我正在使用env:p2eincfilepath
,因为这是访问环境变量的强大方法,并且该应用程序似乎在创建或使用环境变量。如果您需要其他信息,请告诉我。如果直接从powershell运行Ps1并将文件放在根目录中,并用./
调用它们,Ps1似乎可以正常工作,我真的很想继续使用此功能,因为这就是我的状态栏用户知道正在安装什么:
答案 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`""