![7zip - 使用指定的提取路徑建立自解壓縮存檔 (sfx)](https://rvso.com/image/1493932/7zip%20-%20%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AE%9A%E7%9A%84%E6%8F%90%E5%8F%96%E8%B7%AF%E5%BE%91%E5%BB%BA%E7%AB%8B%E8%87%AA%E8%A7%A3%E5%A3%93%E7%B8%AE%E5%AD%98%E6%AA%94%20(sfx).png)
我正在嘗試獲取 7zip SFX 存檔來建立可執行檔。我能夠獲得可執行檔。但是當我運行它時,它給出了Extract to:
.我想更改%AppData%\Roaming
為預設。下面的螢幕截圖將展示我正在嘗試做的事情。
存檔內沒有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] 鍵呼叫。ExecuteFile
AutoInstall
AutoInstallX
如果您指定
RunProgram
orExecuteFile
或呼叫AutoInstall
andAutoInstallX
,則指定的可執行檔將在提取後啟動。
來源設定檔參數
答案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