【问题标题】:Extract files using 7z with vb2010 to %temp%使用 7z 和 vb2010 将文件提取到 %temp%
【发布时间】:2012-11-15 04:19:04
【问题描述】:

这是我尝试过的修改之一。我不太明白 7zipsharp 的事情。

    Dim Arg1 As String = "x"
    Dim Zip As String = "apps\dat\sb.7z"
    Dim path As String = "-o%TEMP%\Updates\sb"
    Process.Start(
"apps\dat\7z.exe",
Arg1 + path + Zip)

我还希望它等到提取完成后再执行代码。

这是当前正在使用的脚本。

@setlocal enableextensions
@pushd "%~dp0"   ::This is so the script doesn't default to %windir%
@start "" /wait 7z.exe X -o%temp%\dat\sb -y sb.7z
::@pause
@start "" /wait /D"%temp%\dat\sb" "setup.exe" %~dp0
@rd /s/q %temp%\dat

目前我正在使用 button_click 来访问此脚本,但我想摆脱该脚本。最好解压到临时目录。

**********更新************* 这是我使用的有效的结束代码。

    Dim temp As String = System.Environment.GetEnvironmentVariable("TEMP")
    Dim Arg1 As String = "x -o"
    Dim Zip As String = "apps\dat\sb.7z -y"
    Dim path As String = temp + "\Updates\sb"
    Process.Start("apps\dat\7z.exe", Arg1 + path + " " + Zip)

我将 -o 移到 Arg1 并删除了空间,以便将 -o%temp%\Updates\SB 读取到系统。

【问题讨论】:

    标签: .net vb.net visual-studio-2010 7zip


    【解决方案1】:

    重写你的代码:

    Dim Arg1 As String = "x"
    Dim Zip As String = "apps\dat\sb.7z"
    Dim path As String = "-o%TEMP%\Updates\sb"
    Process.Start("apps\dat\7z.exe",Arg1 + " " + path + " " + Zip)
    p.WaitForExit();
    
    • 您忘记在参数之间添加空格
    • 您可以调用 WaitForExit() 函数来等待进程完成
    • 解压后可以像7zip一样启动setup.exe

    【讨论】:

    • 谢谢DarkWanderer,有机会我会试试的。我一直沉迷于我正在开发的服务器上,不得不把它放在后台。
    • 一个问题是它提取到应用程序主文件夹中的 %temp% 而不是 C:\\appdata\local\temp 中的 %temp%
    • 这可以通过使用 Environment.ExpandEnvironmentVariables(path) 来修复。可能需要将“-o”部分移动到 Arg1 字符串中。
    • 谢谢,我会使用它,但感谢您,我至少完成了第一部分。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多