【问题标题】:How can I install Choco and a few applications from the same call in my application?如何在我的应用程序中通过同一个调用安装 Choco 和一些应用程序?
【发布时间】:2017-10-13 16:50:04
【问题描述】:

我第一次打开并运行程序时,它会安装 Choco,但不会安装应用程序。如果我关闭应用程序并再次运行它,它将安装应用程序。我的猜测是 WinForm 不知道它可以使用 choco 命令吗?有没有办法让应用程序刷新它的系统?

安装 Chocolatey 时,它会显示: 在使用 choco 之前,您可能需要先关闭并重新启动 powershell 和/或控制台。

所以我可能只是 SOL,但我想我不可能是第一个尝试做这种事情的人。

下面是我安装 Chocolatey 的代码,然后安装使用它的应用程序列表。

Sub InstallChocoApps()
    RunCmd("@""%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"" -NoProfile -ExecutionPolicy Bypass -Command ""iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"" && SET ""PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin""", "", False, True)

    Dim Packages() As String = {"notepadplusplus.install", "7zip.install", "firefox", "googlechrome", "putty.install", "sumatrapdf.install", "vlc"}
        For Each p In Packages
            RunCmd("choco install " & p & " --force -y --no-progress", "", False, True)
        Next
End Sub

Sub RunCmd(command As String, arguments As String, permanent As Boolean, display As Boolean)
        Try
            Dim p As Process = New Process()
            Dim pi As ProcessStartInfo = New ProcessStartInfo()
            pi.Arguments = " " + If(permanent = True, "/K", "/C") + " " + command + " " + arguments
            pi.FileName = "cmd.exe"
            pi.WindowStyle = ProcessWindowStyle.Hidden
            pi.CreateNoWindow = True
            pi.Verb = "runas"
            pi.UseShellExecute = False
            p.StartInfo = pi
            p.StartInfo.UseShellExecute = False
            p.StartInfo.RedirectStandardOutput = True
            p.Start()
            p.WaitForExit()
            p.Close()


        Catch ex As Exception
            LogData(ex.ToString())
        End Try
    End Sub

【问题讨论】:

  • 绝对不是第一个。通常,您可以通过直接从注册表中获取环境变量来刷新它们。
  • 不要使用--force,这是一种反模式。当您编写 Chocolatey 脚本时,请始终使用 choco upgrade。

标签: vb.net cmd path chocolatey


【解决方案1】:

尝试一次调用RunCmd() 安装 Chocolatey 和软件包。或者在运行 choco 命令时引用 Chocolatey 可执行文件的绝对路径。我相信现在是C:\temp\MyChocolatey\bin\choco.exe。

【讨论】:

  • 安装后手动调用它的好主意。谢谢你,先生!
  • "%ALLUSERSPROFILE%\chocolatey\bin\choco.exe" 是你要找到它的地方。
  • 是的,ferventcoder 说的。很确定他是 Chocolatey 的可靠消息来源。不知道为什么它在我的工作计算机上的 C:\temp\MyChocolatey\ 中,但在我的家用计算机上它位于 C:\ProgramData\chocolatey\ 下。相同的版本和一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多