How can a zip-file via NSIS be unzipped and the NSIS-scriptfile into folder be executed automatically? - nsis

I am writting a NSIS-script for installs of the programs and put into folder. The folder is zipped via NSIS. I want, that someone clicks once the zip-file and it will be unzipped and executed the NSIS-script into folder. But how?
Update: I explain again. NSIS has the compiler for NSIS script and Installer based on ZIP! Firstly, I write a NSIS script to install some programs in a folder. Executing the NSIS script is working! I dont want to send the folder, but I want to send only one file. So I am using the Installer based on ZIP to zip the folder. But if I click the zipped file, it will be unzipped on desktop without executing the NSIS script into folder. So I have to click the NSIS script into folder. That I dont want! I want to click only on zipped file and it will be unzipped and executed automatically the NSIS script. Clearly?

.zip files cannot execute code.
NOTE: The ZIP2EXE NSIS tool uses makensis internally, it is just a helper application that creates simple installers.

Your question is confusing, but I believe that what you want to do is create a self extracting archive that contains multiple files and run and NSIS installer contained in that archive it is unpacked.
You can do this with 7zip.
It's easiest to do this with a dos batch file. Open notepad and create "selfinstall.bat"
Add the following;
(
ECHO ;!#Install#!UTF-8!
ECHO Title="My Installer"
ECHO BeginPrompt="Do you want to run the installer?"
ECHO ExecuteFile="Setup.exe"
ECHO ;!#InstallEnd#!
) > temp.$$$
This sets up the information that the self extracter needs such as it's title (My Installer) and the name of the executable to run (Setup.exe)
Then, add the lines to create your zip file
7z a -r files.7z myfolder
where myfolder is the name of the folder that has all the files.
Now, add the installer - Make sure that the installer (Setup.exe) is in the root of the .7z file
7z a files.7z Setup.exe
Then, copy the self extracter and the 7z to a single executable file
copy /b 7z.sfx + temp.$$$ + files.7z "Install.exe"
Then delete your temp files
del files.7z
del temp.$$$
I adapted this from a script I saw here; http://www.911cd.net/forums//index.php?showtopic=18845
For more information on the .SFX modules see here; http://7zsfx.info/en/
There's also a sourceforge project for a GUI to accomplish this; http://sourceforge.net/projects/sfx-maker/

Related

Creating Zip File in Inno Setup Script

Suppose I want to put a zip file in the installation path after installation. But this zip file is not available to me, so it has to be created in the build process.
And a folder must be added to another folder and the zip file must be created from it.
For example I have:
C:Folder1
C:Folder2
And zip file must be:
C:Folder1/Folder2
With all the files in respective folder.
I have unfortunately very little experience with Inno-Setup and this particular problem with the folder in another folder pack without changing the source path but a zip file in .exe to do I find nowhere.
Inno Setup cannot create a zip file for you while compiling.
But you have two options how to delegate the zip creation to an external process
If you are automating complex build process, you will likely be running Inno Setup command-line iscc compiler. So just before running it in your batch build process, run another process/software/tool to create the zip file.
For some example, see:
Inno Setup Pre- / Post- compile action
If you really want to create the zip file on the fly, while manually building the installer in Inno Setup GUI, you can use preprocessor Exec function to start an process/software/tool to create the zip file before the actual compiling begins.
For some examples, see:
Inno Setup Pre- / Post- compile action
Create files in Inno Setup setup needed by the [Files] section
Is it possible to call a batch file while compiling an Inno Setup script?
As for the actual zip file creation, that's not really Inno Setup question anymore. You will file lot of question about that, for example:
Batch file script to zip files

How to create an exe that deletes the dir it is in (including itself)

I am a python developer and I made a program and packed it with inno setup.
inno setup automatically creates 2 files one of them a unins000.dat file and a unins000.exe file
when starting the .exe it will fully uninstall everything that you installed including the exe itself
now the 2 problems I have with this is:
it also creates a .dat file and I just want 1 exe to uninstall the entire program
the exe and dat files are both called unins000 and not just uninstall
(I have already tried renaming them but then the exe just doesn't work anymore)
so I found a way to disable the creation of these files
so now I am trying to create a .exe file that can delete the entire directory it is in including itself
I have started using python so I coded a script which deletes the entire dir the python script is in
but when I package it into an exe using pyinstaller it doesn't work anymore
How can I make an executable that when run deletes the directory where it is in including itself?
You can create exe that after start makes copy of itself into temp folder, then starts this copy and stops original process. Then the second process can delete whole folder. Then after some time OS should delete file left in temp folder on it's own.

How do I access the directory of my NSIS Installer inside a Zip File to extract that Zip File?

I want to extract a ZIP File with the .exe inside.
I want to execute the .exe inside the Zip to extract the Zip File.
Already tried it by executing: ZipDLL::extractall "$EXEDIR" "$DESTINATION"
I think that does not work, cause the .exe is stored in the TEMP Folder when opened, so it cannot find the.Zip file
So how do I extract that Zip when executing the .exe from inside the Zip?
Thanks for answers!
Your question does not make a lot of sense, you should just put the files inside the installer and not have a zip file at all.
Even if it made sense, it is not possible because where a exe is executed from when you double click it inside a zip file depends on the zip program you are using and there is no way of getting the path of the zip it was extracted from.
If for some reason you want to be able to update the files inside the zip file without rebuilding the installer you can use a cab file instead. The CabX plug-in supports extracting from cab files appended to the installer exe.

inno setup doesn't decompress each .bin file

I downloaded an iso which contains the files
setup.exe
setup-1.bin
setup-2.bin
It fails to install by executing the setup.exe so I analyzed it with innoextract, which opens just setup-1.bin but not setup-2.bin. Can I manually decompress the .bin files or modify the setup.exe? If yes, how can I do that?
I think the second bin file is just corrupted, so i'm unable to extract it.
That is the reason why Inno Setup cannot continue in installation.
I think this is an answer - you simply need to download the installer again.

Self Installing Zip Archives ( run app after extracting )

I'm creating an self extracting archive using unzipsfx.exe and with command:
cat unzipsfx.exe archive.zip > Installer.exe
I need to execute an exe from archive.zip after Installer.exe extracts content.
Need to do that from PHP installed on Linux.
I can use exec function from PHP but need to know what to execute.
Self-extracting archives are proper executable files, and if you're creating an .exe file, it's a Windows executable, and you can't execute it under Linux.
(If there is a way to execute it anyway [virtualization, Wine, etc.] then you need to execute the executable file itself.)

Resources