Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在我的应用程序中安装来自同一调用的Choco和几个应用程序?_Vb.net_Cmd_Path_Chocolatey - Fatal编程技术网

Vb.net 如何在我的应用程序中安装来自同一调用的Choco和几个应用程序?

Vb.net 如何在我的应用程序中安装来自同一调用的Choco和几个应用程序?,vb.net,cmd,path,chocolatey,Vb.net,Cmd,Path,Chocolatey,第一次打开并运行程序时,它会安装Choco,但不会安装应用程序。如果我关闭应用程序并再次运行,它将安装应用程序。我猜WinForm不知道它可以使用choco命令?有没有办法让应用程序刷新其系统 安装Chocolate时,它会显示以下内容: 在使用choco之前,您可能需要先关闭并重新启动powershell和/或控制台。 所以我可能只是索尔,但我想我不可能是第一个尝试做这种事情的人 下面是我安装Chocolate然后安装使用它的应用程序列表的代码 Sub InstallChocoApps()

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

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

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

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

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

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

安装后手动调用它的好主意。谢谢你,先生!“%ALLUSERSPROFILE%\chocolate\bin\choco.exe”是您要找到它的地方。是的,正如ferventcoder所说。很确定他是巧克力的可靠来源。不知道为什么在我的工作电脑上它是C:\temp\mychocolate\格式,但在我的家庭电脑上它是在C:\ProgramData\chocolate\格式下。同样的版本和所有东西,绝对不是第一个。通常,您可以通过直接从注册表获取环境变量来刷新它们。不要使用
--force
,这是一种反模式。编写巧克力脚本时,请始终使用
choco-upgrade