How do I make a self extract and running installer
I have created step by step instructions on how to do this as I also was very confused about how to get this working.
How to make a self extracting archive that runs your setup.exe with 7zip -sfx switch
Here are the steps.
Step 1 - Setup your installation folder
To make this easy create a folder c:\Install. This is where we will copy all the required files.
Step 2 - 7Zip your installers
- Go to the folder that has your .msi and your setup.exe
- Select both the .msi and the setup.exe
- Right-Click and choose 7Zip --> "Add to Archive"
- Name your archive "Installer.7z" (or a name of your choice)
- Click Ok
- You should now have "Installer.7z".
- Copy this .7z file to your c:\Install directory
Step 3 - Get the 7z-Extra sfx extension module
You need to download 7zSD.sfx
- Download one of the LZMA packages from here
- Extract the package and find
7zSD.sfx
in thebin
folder. - Copy the file "7zSD.sfx" to c:\Install
Step 4 - Setup your config.txt
I would recommend using NotePad++ to edit this text file as you will need to encode in UTF-8, the following instructions are using notepad++.
- Using windows explorer go to c:\Install
- right-click and choose "New Text File" and name it config.txt
- right-click and choose "Edit with NotePad++
- Click the "Encoding Menu" and choose "Encode in UTF-8"
Enter something like this:
;!@Install@!UTF-8! Title="SOFTWARE v1.0.0.0" BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?" RunProgram="setup.exe" ;!@InstallEnd@!
Edit this replacing [SOFTWARE v1.0.0.0] with your product name. Notes on the parameters and options for the setup file are here.
CheckPoint
You should now have a folder "c:\Install" with the following 3 files:
- Installer.7z
- 7zSD.sfx
- config.txt
Step 5 - Create the archive
These instructions I found on the web but nowhere did it explain any of the 4 steps above.
- Open a cmd window, Window + R --> cmd --> press enter
In the command window type the following
cd \ cd Install copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
Look in c:\Install and you will now see you have a MyInstaller.exe
You are finished
Run the installer
Double click on MyInstaller.exe and it will prompt with your message. Click OK and the setup.exe will run.
P.S. Note on Automation
Now that you have this working in your c:\Install directory I would create an "Install.bat" file and put the copy script in it.
copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
Now you can just edit and run the Install.bat every time you need to rebuild a new version of you deployment package.
Okay I have got it working, hope this information is useful.
First of all I now realize that not only do self-extracting zip start extracting with doubleclick, but they require no extraction application to be installed on the users computer because the extractor code is in the archive itself. This means that you will get a different user experience depending on what you application you use to create the sfx
I went with WinRar as follows, this does not require you to create an sfx file, everything can be created via the gui:
- Select files, right click and select Add to Archive
- Use Browse.. to create the archive in the folder above
- Change Archive Format to Zip
- Enable Create SFX archive
- Select Advanced tab
- Select SFX Options
- Select Setup tab
- Enter setup.exe into the Run after Extraction field
- Select Modes tab
- Enable Unpack to temporary folder
- Select text and Icon tab
- Enter a more appropriate title for your task
- Select OK
- Select OK
The resultant exe unzips to a temporary folder and then starts the installer