7zip - 使用指定的提取路徑建立自解壓縮存檔 (sfx)

7zip - 使用指定的提取路徑建立自解壓縮存檔 (sfx)

我正在嘗試獲取 7zip SFX 存檔來建立可執行檔。我能夠獲得可執行檔。但是當我運行它時,它給出了Extract to:.我想更改%AppData%\Roaming為預設。下面的螢幕截圖將展示我正在嘗試做的事情。

7zip 設定

提取到:對話框

存檔內沒有setup.exe任何內容,它只有幾個需要轉到Roaming資料夾的檔案。這適用於我們的許多用戶,他們無需指定路徑即可獲取此更新。 (當使用者不必指定路徑時總是很容易,否則,根據我的經驗,使用者可以選擇最不尋常的路徑!!)

更新

這是我到目前為止所嘗試過的。我的設定檔內容是

;!@Install@!UTF-8!
InstallPath="%AppData%\\Roaming\\Notepad++"
;!@InstallEnd@!

這是命令列調用。

copy /b 7zS.sfx + config.txt + Installer.7z myinstaller.exe

不幸的是它不起作用。它給出了以下路徑。它應該是%AppData%\\Roaming\\Notepad++

![提取路徑]

答案1

嘗試7z 特效產生器,免費,支援命令列參數,還可以指定解壓縮路徑GUI 主選項卡:

主選項卡

答案2

我想將提取路徑更改為%AppData%\Roaming預設值。

您需要從以下位置下載“修改後的模組”7z 特效產生器(來源鍛造)。

檢查左邊的連結文件(請注意這些連結和下面的文字來自https://web.archive.org/

在您的設定檔中:

InstallPath="%AppData%\Roaming"

設定檔參數

InstallPath =“解壓縮路徑”

設定提取路徑。解壓縮後不會刪除解壓縮資料夾。

如果InstallPath設定檔中不存在該值或從互動式擷取對話方塊中刪除了路徑,則存檔將被提取到臨時資料夾。提取並執行所有命令後,該臨時資料夾將被刪除。

環境變數是允許的(除了%%T和 中定義的變量SetEnvironment,如果%%T在其中任何一個中使用)。您必須在路徑中使用雙反斜線。例如:

InstallPath="C:\\Windows\\system32\\test"

或者

InstallPath="%PROGRAMFILES%\\test"

允許相對路徑。目前資料夾是執行啟動 SFX 存檔的程式的資料夾。例如,

InstallPath="test"

在執行啟動 SFX 存檔的程式的資料夾中建立一個名為「test」的資料夾。所有檔案將被提取到“test”資料夾中。另一方面,

InstallPath="."

將存檔內容提取到執行啟動 SFX 存檔的程式的資料夾。也,

InstallPath="%%S"

將存檔內容提取到 SFX 所在的資料夾。

如果您只需將存檔內容提取到某個資料夾,則需要InstallPath在設定檔中指定 的值。

在這種情況下,您不應在設定檔中指定RunProgram或。或可以在設定檔中指定,但不應透過命令列或使用 [SHIFT] 鍵呼叫。ExecuteFileAutoInstallAutoInstallX

如果您指定RunProgramorExecuteFile或呼叫AutoInstalland AutoInstallX,則指定的可執行檔將在提取後啟動。

來源設定檔參數

答案3

只需使用-y -o<PathToExtract>Setup.exe -y -oc:\abc

答案4

(以防萬一有人仍然試圖這樣做)

我無法弄清楚如何將 SFX 存檔提取到特定位置,而不指定 setup.exe 或類似檔案。

"-y -oPATH"我透過使用所示的開關成功實現了我的目標這裡並將常規 SFX 存檔儲存在批次檔中(將檔案儲存在批次檔中

結果不是 EXE,而是 CMD 檔案。 (但只是CMD 檔案)

方法

  • 創造原始程式
  • 建立和編輯腳本.cmd
  • 創造組合.cmd
  • 執行組合.cmd

組合.cmd顧名思義,結合 script.cmd 和 source.exe 來創建輸出.cmd

output.cmd是結果,運行時會複製原始程式將其自身轉移到臨時位置,使用指定該位置的參數運行它,然後刪除臨時檔案。

原始程式

這是使用「make sfx archive」選項建立的 7z SFX Archive。它包含您要提取的所有文件。

腳本.cmd

您需要將 {target} 替換為您想要的位置。例如:C:\範例

必須exit /b在儲存此文件之前新增一個空的新行。

;;;===,,,@echo off
;;;===,,,findstr /v "^;;;===,,," "%-f0" > "%temp%\tempdata.exe"
;;;===,,,start /wait "" "%temp%\tempdata.exe" -y -o"{target}"
;;;===,,,del /f /q "%temp%\tempdata.exe"
;;;===,,,exit /b

組合.cmd

copy /a script.cmd  /b source.exe /b output.cmd

相關內容