2012-11-15 45 views
0

這是我試過的版本之一。我無法弄清楚7zipsharp的事情。使用7z與vb2010提取文件到%temp%

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來訪問這個腳本,但我想擺脫腳本。它最好是提取到臨時目錄。

** * ** * ** * *UPDATE* ** * ** * ** * *** 這是我使用過的結束代碼。

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%\更新\ SB系統。

回答

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()函數來等待過程完成
  • 打開包裝後,可以啓動之間的空間setup.exe類似於7zip
+0

感謝DarkWanderer,當我有機會時,我會嘗試它。我一直如此深陷於我正在研究的服務器中,因此我必須將其置於後臺。 – NoNo

+0

與此相關的一個問題是,它將應用程序主文件夾中的%temp%提取爲%temp%,如C:\ \ appdata \ local \ temp – NoNo

+0

這可以通過使用Environment.ExpandEnvironmentVariables(path)來解決。將「-o」部分移到Arg1字符串中可能是必需的。 – DarkWanderer

相關問題