7zip - Create self-extracting Archive (sfx) with specified Extract path

66,458

Solution 1

Try 7z SFX Builder, it's free, supports command line parameters, and also you can specify extraction path on the GUI Main Tab:

Main tab

Solution 2

I would like to change the Extract Path to %AppData%\Roaming by default.

You need to download a "modified module" from 7z SFX Builder (sourceforge).

Check the links on the left for documentation (note these links and the text below is from https://web.archive.org/)

In your configuration file:

InstallPath="%AppData%\Roaming"

Configuration file parameters

InstallPath="path_to_extract"

Sets the extraction path. The extraction folder will not be deleted after the extraction.

If the InstallPath value is not present in the config file or the path was deleted from the interactive extraction dialog, the archive will be extracted to a temporary folder. This temporary folder will be deleted after the extraction and execution of all commands.

Environment variables are allowed (with the exception of %%T and variables defined in SetEnvironment, if %%T is used in any of them). You MUST use DOUBLE backslashes in paths. For example:

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

or

InstallPath="%PROGRAMFILES%\\test"

Relative paths are allowed. The current folder is the one from which the program launching SFX archive was executed. For example,

InstallPath="test"

creates a folder with the name of "test" in the folder from which the program launching SFX archive was executed. All files will be extracted to the "test" folder. On the other hand,

InstallPath="."

extracts the archive content to the folder from which the program launching SFX archive was executed. Also,

InstallPath="%%S"

extracts the archive content to the folder where the SFX is located.

If all you need is to extract the archive content to a certain folder, you need to specify a value for InstallPath in the config file.

In this case you should not specify RunProgram or ExecuteFile in the config file. AutoInstall or AutoInstallX may be specified in the config file, but should not be invoked via the command line or with the [SHIFT] key.

If you specify RunProgram or ExecuteFile or invoke AutoInstall and AutoInstallX, the specified executable will be launched after the extraction.

Source Configuration file parameters

Solution 3

Just use -y -o<PathToExtract>: Setup.exe -y -oc:\abc

Share:
66,458

Related videos on Youtube

NotepadPlusPlus PRO
Author by

NotepadPlusPlus PRO

Coder. Writer. Blogger. Tech enthusiast. Notepad++ PRO.

Updated on September 18, 2022

Comments

  • NotepadPlusPlus PRO
    NotepadPlusPlus PRO over 1 year

    I am trying to get the 7zip SFX archive to create an executable. I am able to get the executable. But when I run it, it give the downloads path for Extract to:. I would like to to change to %AppData%\Roaming by default. Screenshot below will give an idea of what I am trying to do.

    7zip settings

    Extract To: dialogue box

    There are no setup.exe or anything inside the archive, it has just few files that needs to go to Roaming folder. This is for many of our users, who can get this updates without them specifying a path. (It is always easy when users do not have to specify a path, otherwise, it is my experience that the users can pick most unusual paths!!)

    Update

    Here is what I have tried so far. my config file content is

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

    This is the command line call.

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

    Unfortunately it does not work. It gives the following path. It should be %AppData%\\Roaming\\Notepad++.

    ![Extract path]

    • Don't Root here plz...
      Don't Root here plz... almost 8 years
      This option is available with WinRAR but don't know about 7-zip.
  • NotepadPlusPlus PRO
    NotepadPlusPlus PRO almost 8 years
    Thanks David. But can you tell me how to use configuration file?
  • DavidPostill
    DavidPostill almost 8 years
    @Cricrazy See General information about the modified module which you have to download, and check the links on the left. Answer updated.
  • NotepadPlusPlus PRO
    NotepadPlusPlus PRO almost 8 years
    omegastripes, it works great. Thank you. It has amazing amount of options. Thanks a lot.
  • Lieven Cardoen
    Lieven Cardoen over 7 years
    McAfee deletes the exe after installation because of a Trojan horse...
  • papertape
    papertape over 7 years
    This 7-Zip config setting InstallPath is just what I am looking for. At moment I have to create a batch file to copy files from temporary extraction folder to our application's run time folder: ;!@Install@!UTF-8! Title="Local Manager" InstallPath="C:\kiosk\update" RunProgram="7zbootstrap.bat" ;!@InstallEnd@! @ECHO OFF REM 7zbootstrap.bat SETLOCAL SET update=C:\Kiosk\update XCOPY *.* %update%\ /S /E /I /F /Y CD %update% ECHO LAUNCHING AUTOUPDATE.BAT SCRIPT TIMEOUT /T 5 /NOBREAK autoUpdate.bat However, link no longer works.
  • papertape
    papertape over 7 years
    Can't get mini-Markdown to format the code block properly. Please amend if you know how. Thanks.
  • DavidPostill
    DavidPostill over 7 years
  • DavidPostill
    DavidPostill over 7 years
    @papertape Answer updated with working links.
  • NotepadPlusPlus PRO
    NotepadPlusPlus PRO about 7 years
    can you give an example? what is e.g. and -oc?
  • Ravindra Bawane
    Ravindra Bawane about 7 years
    "e.g" stands for "expempli gratia", which basically means "for example". It is commonly used to indicate an example, just as you request. The answer is still bare of explanation and could use formatting, but it DOES include a full example.
  • Caturday Saint
    Caturday Saint about 7 years
    If you can elaborate on the command? You should always give a break down of what commands are going to do, as the user on the other end is going to be wary of commands with functions they don't know.
  • Kazark
    Kazark about 7 years
    Command-line parameters get passed through to the contained Exe.