I made 25KB exe file with installsimple,
and 28KB exe file with 7-zip sfx module
But i believe what installer can be smaller for several 1-2KB files
What i need from installer:
one executable file for deploy
smallest possible size of result exe file
launch my program after install
silent work - dont show any windows
What will be great(but optional):
change icon of install exe file
Related
I have a kivy project in python.
I build an exe with Pyinstaller based on this project.
I have a .nsi compiled which builds me an .exe installeur based on the previous .exe.
Everything works !
I am actually scripting the proccess to make it easier.
PROBLEM: What is the line of command that build an .exe installer based on a .nsi and an .exe ?
(To be really precise, I want to replace the "open HM NSIS Edit software, find your file.nsi, right click on it, click on 'Compile and Execute'" by a command line on a Windows terminal)
Just pass the .nsi path to MakeNSIS:
"c:\Program Files\NSIS\MakeNSIS.exe "c:\mystuff\myinstaller.nsi"
It is possible to create extra defines with /D but you would know if your script requires this.
I have created a python application and can install it perfectly fine on Windows. I run pyinstaller to generate the executable, and then use NSIS to create an actual installer. I run the installer and it installs the application to my Program Files folder and gives me a nice desktop shortcut, etc.
What is the process to do the same for Mac? Essentially, I want to give my user a single file. When they run the file, it installs my program and any necessary libraries, and let's them launch it with a single click. I believe on Mac this is done with a .dmg or a .pkg file. What software/tools do I need to generate such a file? Do I need to restructure the project in anyway to create this?
For more info, pyinstaller creates a folder 'dist' which contains the unix executable of the application, and copies of python and any required libraries.
Note that I do not want to use the onefile option for pyinstaller because it would take a while to unpack everything each time the program is ran.
I need to create self-extracting archives that, once extracted, run different executables depending on the bitness of the Operating System.
Until now, I have done this by use of WinRAR and BAT files but the quick flash of the Command Prompt window prior to the main application's window looks suspicious.
So, I'm looking for a better option but have yet to find one.
You could code a 32-bit GUI application in C/C++/C# not opening a window which for example determines with getenv_s or getenv if variable ProgramFiles(x86) exists (only on 64-bit Windows) and starts next the appropriate main application. This executable is compressed into the SFX archive and executed by the SFX archive.
Or you code your own SFX module. The sources for unpacking a RAR archive can be downloaded from RARLAB.
Or you code a Windows script for determining bit width of Windows and starting the appropriate main application and execute this script by the SFX archive with wscript.exe which does not open a console window like its counterpart cscript.exe.
Or you create a 64-bit SFX which can be run only on 64-bit Windows and a 32-bit SFX which can be run on 32-bit and also 64-bit Windows and offer both for download. Most users of 64-bit Windows will most likely download the 64-bit version.
I want to deploy my program on Macintosh and I have a working installer but the installer and the files are packed into a zip file. I would like to make a DMG file and place them into it. This is easy to do but I would like the installer to start automatically when the user opens the DMG file. Is there any way to do that?
No, you cannot do this. What you need to do is convert your installer package to a flat package (these are now the default anyway). A flat package installer is a single file, so there's no need to bundle it into a zip or DMG.
Using Advanced Installer, I have created and run a simple installer that contains a single .exe.
This .exe started as an executable jar (w/ splashscreen) and was built into a Windows .exe using Launch4j.
Once the application is installed (in C:\Program Files (x86)...), I can't execute it from the installation directory. However, if I copy the .exe to anywhere else, Desktop, or any other directories created by other installers, the .exe will start perfectly.
This appears to be a folder or application permissions issue. Comparing the permissions between this folder and the one created by Advanced Installer, the permissions and settings are identical.
The ONLY difference I see, between the installed .exe and the same .exe copied to another folder, is that the "Edit Permissions" button has an admin shield on it (one originally installed by AI).
Is there a setting in Advanced Installer that will allow my .exe to run once installed, or is this just trickery employed by AI to get you to pay for a more robust version? I am unable to make any changes in the OS that enable this file to run in the directory created by AI.
If the executable fails to run from Program Files but does works from another folder it most probably happens that your EXE needs write access to that folder. If you launch it with the option "Run as administrator" it should work. This is not caused by a limitation from Advanced Installer.
Starting with Vista onward you can embed a manifest file into an executable file, that specifies for the OS the execution level, so you can set the level to "RequireAdministrator", thus your will EXE will always behave as you launch it with the option "Run as administrator" when launched from a shortcut or double-clicked.
The cause of this error was that the target directory included an exclamation mark. "!".
I had switched to using InnoInstaller and it was working in an initial version, until I later switched the target dir to include the exclamation mark, and it was broken in the same way. (Removing it fixed.)
Have no idea why this was causing the problem, just an fyi.