Does an universal cross-platform installer exists? [closed] - installation

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
I wonder is someone tried to create either kinda open standard for cross-platform installer for an application or the installer implementation? That means you can simply download single file from the website, and it's extension recognizable by any popular operating system? We have .pkg and .dmg files for mac, .msi and plain .exe installers for windows, .deb packages for linux (in case of debian), but we haven't universal for each platform (like .uoi (Universal Open Installer), lol).
One might think that this approach is impossible because every OS has it's own structure and files organization, but this installer could potentially contain instructions for each OS simultaneously, and it may contain even shared files (like pictures, textures or sounds) as they can be reused for each platform and they are platform-independent.
I think it's a good idea to implement such installer, free for all and open-source

"Mainstream": A shared packaging format seems elusive. However, there are a few multi-platform deployment tools available. Installsite.org has a list towards the bottom here. I guess the two most commonly used tools are (both are commercial):
Advanced Installer for Java / Advanced Installer Enterprise (Windows and Mac, no Linux)
Flexera InstallAnywhere (Windows, Mac, Linux)
Extended Universe: There are several other tools, one of which is Bitrock
InstallBuilder - a tool I know nothing about, so I can neither recommend nor dismiss it. There is also the QtInstaller Framework which I have yet to try. Seen people recommend install4j. Here is the install4j site: What are good InstallAnywhere replacements for installing a Java EE application?
Then there is Zero Install - a cross-platform packaging and distributions software - uncharted territory for me. And Steam, the cross-platform video game distribution, licensing and social game-play platform, developed and maintained by Valve. Used to shop for, download, install, update, uninstall and back up video games. It works on Windows, OS X and Linux. Similar to Steam is Uplay from Ubisoft - another video game distribution platform. Maybe PyInstaller should be mentioned? (cross platform Python programs).
Java: I encountered Oracle Universal Installer some time back in a SO question. A Java-based installer for Oracle tools. A mystery-tool. The now deprecated Java Applets of old, and the soon to be obsolete Java Web Start feature should be mentioned as cross-platform. Developers are supposed to migrate to jlink before the end of 2020 - Oracle PDF: Java Client Roadmap Update - Oracle PDF: Java Client Roadmap Update (superseded).
Future?: Not much in the realm of a real answer, but some pointers. As I keep repeating, I don't know much about these tools to be honest. I guess recent XML / Zip-based formats can be made cross-platform more easily than previous technologies such as Windows's COM structured storage files (the old MS Office file format, a file-system in a file essentially - streams of data) that were used for MSI installers. Time will tell. In the age of the cloud, who knows what will surface?
Struggle: I can, however, tell you that I have been struggling with multi-platform installers as a corporate application packager (not developing setups, just deploying them), and these multi-platform installers have always been problematic to deal with. Very non-standard and high astonishment factor at times to deal with. For example: you launch a setup.exe which only launches a second setup.exe and then exits reporting nothing sensible, so you don't know what happened to the actual install that was kicked of asynchronously at all. That kind of stuff. So you have to write weird scripts to check installation progress, etc... Dealing with a multi-platform installer has never been fun.
Some Links:
https://en.wikipedia.org/wiki/List_of_software_package_management_systems
http://www.pyinstaller.org/ (cross platform Python programs)
https://en.wikipedia.org/wiki/List_of_installation_software (maybe check Installer VISE)
https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/self-contained-packaging.html
http://izpack.org/downloads/
Old mentions:
How can I convert my Java program to an .exe file?
Make Installer of java Application
What are good InstallAnywhere replacements for installing a Java EE application?
What is the best practice to auto upgrade MSI based application?
How to create a MSI Windows installer for a Java program?
Creating an installer for Java desktop application
https://stackoverflow.com/tags/java-web-start/info

I have used install builder and yeah its crossplatform.. the downside is you have to pay..

Related

What are the risks of doing my own cross platform (Win + OSX) installer?

I have a quite complicated build process involving different directories (for plugins) ; currently using NSIS on Windows and PackageMaker on OSX but have issues improving them as my install / uninstall process is getting more complex with time.
The more I look into it, the more I feel like I should code my own cross platform installer with a cross platform GUI like wxWidgets (I've used it before) and copy myself the right files in the right directories because I cannot find any good cross platform software installer OR even programmatically customizable software installers for both platforms.
Has anyone gone down that path ? Does anyone know what are the hardest things to achieve, blocking everyone to produce good softwares installers and why doesn't this exists right now ?
Thanks in advance!
Does anyone know what are the hardest things to achieve
The hard part about installers is not wizard GUI, it’s OS integration. That integration is dramatically different across OSes.
On Windows, you need to use MSI. NSIS doesn’t do particularly good job, MSI enables repair/modify functionality, by default MSI can upgrade stuff even when old version is still running (and it continues running while being replaced), some MS libraries ship as *.MSM merge modules… BTW, I usually use WIX for that.
Similarly, on Debian and Ubuntu Linux you need to create .deb packages. Even if you’re making a GUI installer. They also support repair & upgrades, versioning, dependencies, but they do it in completely different way than MSI.
I don’t have much experience with OSX but I think it has some other installer infrastructure implemented by the OS.

Don't want to ask users to download JRE

My question is similar to the one asked in this forum in 2010 - "is JRE installed in Windows & Linux?". And I am wondering if things have changed since then
In particular, my site hosts a downloadable Java application that basically transmits specific files from the user's PC to our server. But every now and then I find that some of my users - all non-techies - don't have JRE installed. And hence, I have to ask them to install JRE first.
Asking users to download something before they can start using my application can only ruin the end user experience. Understandably, that is a no-no. And so, I am ready to re-implement the application. But before I can propose re-implementing the app in some other technology - like Qt - I need facts to make a case. In particular, I would like to know
Is it safe to assume that any PC with an OS that is XP or above would have JRE installed on it?
Is Qt a viable - and preferable - option for making a "download-now-use-now" type of application? Don't Qt applications need a JRE equivalent too?
Are Qt applications able to update themselves like Java apps can?
Other than having to maintain/compile multiple versions of Qt, are there any other disadvantages to using Qt?
Thanks for your responses
Abhinav
No, it is still not safe to assume that every machine had the JRE installed, though it is easy to install for every machine.from the Java website. Java is not installed by default on any Windows computer but I believe it is installed by default in many Linux distributions.
Qt is a GUI front end system for other programming languages. I know of Qt implementations for C, Python and now Java. If you are intending to use Java Qt then you will need to use the JRE to run it, it is not a way to get around restrictions of Java but is instead a way to make applications look consistent even though they are written in different languages.
A Java Qt application will have the same abilities as a normal Java application in terms of updating.

MS Windows Programming advice for Mac/Unix developer

I have a few years of experience writing Unix command line tools (no GUI experience) in python, C and C++, and only recently crossed into the GUI world (Cocoa and IOS only). I've learned quite a bit of objective-C and am getting to understand how cocoa MVC works. However, one of the apps I am developing needs a Windows version and I was wondering what a good place to start would be given that I have absolutely no Windows development experience.
I was thinking about using Visual C++ 2010 Express as my development platform (because it's free and because I don't need to learn C++). My application is relatively simple, it will have only two windows and spend most of the time running in the background. It will however need to communicate with the OS (load dll's etc) and an online server (HTTP methods) and I'm not sure whether Visual C++ Express edition gives me access to the required API's. Would a Windows Forms application suffice? Am I going about this the wrong way? Do I need to learn C#? Any advice will be appreciated.
If you are already happy with proper c++, visual Studio C++ express should suit you fine. Given that you are not making a complicated GUI, you don't even need to dip into the managed code - C++ express allows you to create proper c++ console and GUI apps. You also don't need to install the platform SDK - it is part of VS C++ express.
Not being managed C++, you will be able to share source files between your various projects. managed c++, despite the c++ in the name, really is a different enough language that it will be annoying to work with if you simultaneously have to deal with iso C++.
--
Note: The native windows API is a C api, not a C++ framework. So it does not provide a rich set of classes in a coherent framework to deal with. On the other hand, while, large, it is actually quite simple to work with.
Also: Given that you are already familiar with Mac development, there is a LGPL (iirc) package called CFLite that builds on windows and that implements the C api that underlays the Objective-C Cocoa API.
If you use its abstratcions you can share a greater part of code between windows and Mac (and other platforms).
Other C++ IDE's you might want to consider:
Code::Blocks
QT Creator
both of which can be configured to use the MINGW port of GCC to windows.
you'll be better off with c++ than c# if you need more "low-level" stuff. Loading dlls (that is, libs) is simple (pragma comment lib...), as is pure HTTP transfer and communication.
So, VC++ with windows form will suffice, and it is "very c++".
You have access to all global APIs, and loading specific apis like http requires only two lines: one to include wininet header, and other lib (libs are actually "references" to dlls).
If you go the C++ Express way then you need to install Windows SDK separately, and set it up for Visual Studio to use it. And you can't use MFC.
I would however, suggest C#, because it feels like putting little toy bricks together. Easier to debug and maintain. Problem with C# is that it has so many library functions that you can not possibly know if what you want is already made to a function. But that's why we are here :-) If you feel that something you want to do should already exist then ask a question about it. One notable feature that C# lacks is zip archives (it has something similar, but not quite). For zips you can use public libraries, like SharpZipLib or DotNetZip.
If I were you, I wouldn't jump into a whole new API so quickly. Have you considered using Python on Windows? Most of the Python packages I've seen are also available for Windows, so you'll feel at home. And if you need some GUI, you can opt for wxPython, pyGTK or something similar.
For Windows specific things, you can always use ctypes. Especially if they're as simple as loading a DLL.
have you considered approaching Adobe AIR? it allows you to deploy on Mac, Linux, Windows, iOS, etc. communicating with and launching native processes has been possible since 2.0 and the the latest 2.5 SDK can target Android OS and TVs. with your experience you should be able to pick up ActionScript3 / MXML in no time.
additionally, there are a handful of free IDEs you can use with the Flex and AIR SDKs. or, if you're a student or low-income developer, you can get a free copy of Flash Builder 4 from Adobe: http://www.adobe.com/devnet-archive/flex/free/
edit: i believe deploying AIR applications on iPhone requires Flash Professional CS5, which includes the packager for iPhone options. at the same time, i've read that AIR and other cross-compilers for iOS are painfully slow, so it's perhaps best to develop natively in Objective-C for iOS.

Developing lightweight (no runtime) Windows based GUI applications using free tools [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Does anyone know of free tools (languages, environments) that would support development of GUI applications on the Windows platform?
I am looking to be able to create a single executable file that has no dependencies on any external runtime or library.
I would like to be able to then run this EXE in a very similar manner to Process Explorer or Autoruns from SysInternals. In other words; a no installer, portable application.
This application must also provide a reasonably rich windowing (controls, widgets etc) user interface and should run on Windows 2000, XP, Vista and later.
I'm aware of C/C++ but I'm looking for an environment/language that provides more specific and faster support for GUI development. Also, Delphi costs money.
For quick prototyping, Autoit is a viable option (but it is a scripting language though).
Combined with Scite as an Editor, and autoit to exe capability (AutoIt3.exe in Scite and Autoit3Wrapper.exe to actually produce exe), you have a full GUI development environment.
AutohotKey is an alternative, but based on old AutoitV2.
Still, you can execute AutohotKey scripts from Autoit ;)
Run("c:\Program Files\Autohotkey\Autohotkey.exe c:\scripts\devicesset.ahk")
While interactive debugging is not natively supported, they are (2008, but in 2014: was?) several debugging tools to facilitate the debug process. (from this ticket)
Update 2014: the "AutoEditDebugger" might not be supported:
EDIT October 2009: NB This script has not been maintained since some time in 2008. Due to some problem with the editor it crashes in Vista.
Delphi is definitely a good way to go. There is a free version called Turbo Delphi.
The version available is a couple of years old, so it's a shame they haven't release Turbo versions of the new stuff.
There are also trials available of the full fledged RAD Studio, but I don't think that's what you're looking for.
You can Get Turbo Delphi and Turbo C++ Builder explorer editions for free, and you can develop with them native application that you can have only .exe file without any dependencies on any windows version from (win98 to win7), both of them include more than 200 components, and you can use more (without installing to IDE that the only restriction), and you develop with them free and commercial software.
Delphi is the most RAD(Rapid Application Development) IDE that you can use to produce windows application in very easy and efficient way, you get fast developing application with fast execution time compared to speed of C++.
Another option to use Lazarus IDE, which based on FreePascal compiler, so you can have your application running on windows/linux/MacOS/Unix and more.
Visual C++ Express + WTL. Both are free. WTL is a relatively good(1) windowing library. No wizards, though, and you have to have good understanding of the Win32 windowing system.
You can also use Visual C# Express along with Mono to build WinForms app. While the end result is not technically a standalone executable and requires a framework, Mono dlls can be distributed along your exe (2), so you can just have a single folder for xcopy deployment. (And I think on Windows with .Net installed, your exe will be run on .Net automatically)
(1) I am spoiled by WPF. :-)
(2) Read on the intertubes. I have not personally tried it, though.
Perhaps not an option given your statement regarding C++, but if you are developing an open source / free application then Qt is a very nice GUI toolkit with designer.
Also, wxWidgets is a very functional toolkit that will allow you to deploy a single exe, although the best GUI designers are not free.
Maybe D is an option? A friend of mine blogged about a GUI Designer for D here and I believe that the resulting executable has no dependencies.
Just use VS.NET with C and Win32 api.
No runtime needed of course, as the CRT is native.
You should use Digital Mars C/C++ in pure C and program with GDI32 functions of WIN32 API (Just #include ). Don't forget to link your binary object executable with gdi32.lib.
Check out Microsoft's Express editions of their developer tools.
If you're doing very simple applications, AutoIt might be an option as it requires no runtime files and its executables will even run on WinPE. It's a bit primitive though and not exactly object-oriented. It works a bit like the old VB. It is, however, free and easy to learn and apart from something like NSIS (NullSoft Install System) there aren't many free, standalone GUI creators.

Subversion Client-Side application [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Which standalone Windows GUI application do you recommend for use for accessing a Subversion repository?
Edit: A lot of people are mentioning Tortoise, however I am looking for an application not a shell extension. Also people are questioning my reasoning behind not wanting to use a shell extension. In our environment we rather interact with the repository (when not using an IDE plugin) through a management application and not navigate the files through Windows Explorer.
Standalone Clients
For total stand alone Synchro SVN is a powerful and cross platform solution. It looks like the most native application on each of the platforms.
The Subversion website includes a listing of other standalone SVN Clients (most are cross platform). [Copied list below from http://subversion.tigris.org/links.html#clients]
eSvn - cross-platform QT-based GUI frontend to Subversion
http://sourceforge.net/projects/esvn
FSVS - fast subversion command-line client centered around software deployment
http://fsvs.tigris.org/
KDESvn - A Subversion client for KDE
http://www.alwins-world.de/wiki/programs/kdesvn
QSvn - A cross-platform GUI Subversion client
http://ar.oszine.de/projects/qsvn/
RapidSVN - A cross-platform GUI front-end for Subversion
http://rapidsvn.tigris.org/
RSVN - Python script which allows multiple repository-side operations in a single, atomic transaction.
https://opensvn.csie.org/traccgi/rsvn/trac.cgi/wiki
SmartSVN - A cross-platform GUI client for Subversion
(Not open source. Available in a free and a commercial version.)
https://www.smartsvn.com/
Subcommander - A cross-platform Subversion GUI client including a visual text merge tool.
http://subcommander.tigris.org/
SvnX - A Mac OS X Panther GUI client.
http://www.lachoseinteractive.net/en/community/subversion/svnx/
Syncro SVN Client - Cross-platform graphical Subversion client.
(Not open source. Free trial versions available for Mac OS X, Windows and Linux.)
http://www.syncrosvnclient.com
WorkBench - Cross platform software development GUI built on Subversion written in Python
http://pysvn.tigris.org/
Versions - A GUI Subversion client for Mac OS X.
(Not open source; requires commercial license.)
http://www.versionsapp.com/
ZigVersion - a Subversion Interface for Mac OS X. Aims to design an interface around the typical workflows of programmers.
(Note that this is not open source.)
http://zigversion.com/
Integrated Clients
TortoiseSVN is the best general use system [An integrated system is not standalone - Thanks Martin Kenny]. It integrates itself into Windows Explorer (You can use it in explorer or any shell dialog) so it works extremely well and gives you the full power of SVN.
Ankhsvn is a good solution that integrates into Visual Studios (Except Express Editions).
SVN Notifier monitors your repositories and will notify you when anything changes. It integrates with TortoiseSVN to show you diffs and commit logs. Very handy when working in a team environment.
TortoiseSVN
From their website:
A Subversion client, implemented as a windows shell extension.
TortoiseSVN is a really easy to use Revision control / version control
/ source control software for Windows. Since it's not an integration
for a specific IDE you can use it with whatever development tools you
like. TortoiseSVN is free to use. You don't need to get a loan or pay
a full years salary to use it.
You can try to use SmartSVN - https://www.smartsvn.com/
Can you explain why TortoiseSVN doesn't work for you? That would help us figure out what you really need in an application.
Combine TortoiseSVN with Windows Explorer and you've got a great tool, and then pickup VisualSVN if you want something to integrate with Visual Studio.
As a shell extension, I guess it's not technically a stand-alone application, but +1 for TortoiseSVN, nevertheless.
I'd recommend TortoiseSVN to get started with (basically, it adds SVN related contextual menus to explorer), but it can be shockingly memory hungry.
I generally use it when I need to, but also make use of the very clean and usable command line tools subversion comes with and Subclipse as part of Eclipse.
The one and only tortoiseSVN!
It is integrated in Windows Explorer, you invoke it with a right click. All commands are under the TortoiseSVN menu, except for frequently used commands such as update, commit or diff (it's configurable).
For some reason, the SVN proterties are located in a tab in the Properties menu, not in the TortoiseSVN menu. It makes sense, sort of, but it took some time getting used to it.
TortoiseSVN is excellent, but I only realised it was awesome when I moved to a Mac (where Tortoise is not available) and tried to find a decent tool. Nothing comes close.
If you don't like shell extensions TortoiseSVN can be used as an application through its handy automation interface - one executable several command arguements.
See TortoiseSVN Manual
Each command raises a modal dialog for a specific task.
For total stand alone Synchro SVN (60$) is one of the nicest looking and full featured ones. It is cross-platform (Win, Linux, OSX).
I use PHPStorm from JetBrains
It can be used in MAC or WIN PC environment. It has internal subversion/git/mercurial tool.
though you do have to pay for it ($50) they have 30 day fully functional trial.
SmartSVN is nice if you want a client that doesn't integrate with Explorer and is instead a standalone app. (Although I think later version offer an Explorer integration as well.)
Memory and disk IO can be a problem with TSVNCache, which manages Tortoise's icon overlays. You can fix it by putting your checkouts in one or two directories and making the cache process only look at those directories, rather than your entire drive.
See this link for instructions.

Resources