【问题标题】:.Net Framework 4.8 why oh why.Net Framework 4.8 为什么哦为什么
【发布时间】:2020-07-22 18:43:27
【问题描述】:

我正在尝试使用 Packer 安装 .Net Framework 4.8,以使用在打包过程中运行的 powershell 脚本自定义 AWS 2016 Server Base 映像。然而,框架安装的可能性似乎是 50/50。我在 powershell 脚本中使用了以下语句,当我在机器上手动安装时,安装不会出现任何问题。

Invoke-WebRequest https://go.microsoft.com/fwlink/?linkid=2088631 -OutFile C:\temp\dotnet.4.8.exe # Download from MS
Write-Host "Installing 4.8"
Start-Process C:\temp\dotnet.4.8.exe -ArgumentList "/q /norestart /log c:\temp\" -Wait #Fire a new process to install silently
Write-Host "Installed 4.8 $LASTEXITCODE"

我怀疑它甚至没有启动,因为日志文件永远不会生成,我可以验证它确实写入了文件,因为当我手动运行命令时,文件会在几秒钟后显示出来在安装所需的几分钟内不断写入。

我在打包程序输出中没有看到任何错误,在事件查看器中也没有报告错误。 Packers 的输出只是Installing 和Installed write 语句。

我引用了这个document from MS,因为安装程序似乎没有帮助模式来显示可用的选项。

我应该以不同的方式调用可执行文件以确保它以无人参与的方式启动吗?

【问题讨论】:

  • 那么,当您禁用 /q quiet mode 时会出现什么错误
  • 如何自动调用脚本?使用计划任务?如果是,触发器是什么?您是否考虑过:Windows fast logon optimalization
  • 可能有一个 GPO 规则会禁用从 Temp 目录运行的可执行文件,甚至 AV 软件会阻止它。另外,下载了可执行文件,你试过Unblock-File或者下载到不同的文件夹吗?
  • @iRon 如果我删除它会挂起,因为 gui 会等待输入,并且由于它正在使用 winrm 运行命令,因此没有任何东西可以连接并单击
  • @Theo 这台机器是来自 AWS 的黄金映像。自定义步骤是使用 Hasicorp 的打包程序完成的,并且该实例未连接到域。该文件已解锁,因为我可以从映像启动实例并运行上面的 powershell 命令而不会出现任何问题。

标签: .net powershell windows-server-2016


【解决方案1】:

这样的事情呢?

$myURL="https://go.microsoft.com/fwlink/?linkid=2088631"
$myOutFile="C:\temp\dotnet.4.8.exe"
        
    if ( !(test-path -path $myOutFile)  ) {
        New-Item -Path 'c:\temp' -ItemType Directory
        $response = Invoke-WebRequest $myURL -UseBasicParsing
        [IO.File]::WriteAllBytes($myOutFile, $response.Content)
    }


    if ( (test-path -path $myOutFile)  ) {
       Write-Host "Installing 4.8"
    Start-Process C:\temp\dotnet.4.8.exe -ArgumentList "/q /norestart /log c:\temp\" -Wait #Fire a new process to install silently
    Write-Host "Installed 4.8 $LASTEXITCODE"
}

【讨论】:

  • 对于 Windows 10 我必须这样做:codeDISM.exe /online /enable-feature /all /featurename:NetFx3 codeDISM.exe /online /enable-feature /all /功能名称:NetFx4
【解决方案2】:

如果您运行,.Net 4.8 安装程序确实会有帮助提示

Start-Process "PathTo.NetInstaller.exe" -ArgumentList "/?"

这将显示一个长帮助列表,说明您需要使用以下语法运行安装程序:

Setup /switches go here

因此,对于您的示例,您将运行:

Start-Process "PathTo.NetInstaller.exe" -ArgumentList "Setup /q /norestart /log c:\temp\" -Wait

【讨论】:

    【解决方案3】:

    要安装 Microsoft .NET Framework 4.8,请从命令行或 PowerShell 运行以下命令:choco install dotnetfx

    【讨论】:

    • 这需要预先安装巧克力。
    猜你喜欢
    • 2021-05-01
    • 2022-12-16
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多