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.
This is a conceptual question and I hope it fits into Stackoverflow's question and answer style. I wonder what the concept of installing applications is good for. In my naive understanding of operating systems we do not need a registry and to use an application it should be enough to just copy the executable and files onto your drive and launch that.
Am a Windows user but also worked with Linux a bit and noticed that there are package managers instead of installers. But even those do more than just a copy instruction, I guess.
I do not think that all the installers exist only because the common user expects them out of steady habit. So what is the advantage of installers in contrast to developing applications which are designed to run out of a single folder and copy that over?
I would really like if someone could explain that concept.
Installing applications is a way to embed them in the OS. It's a kind of standard, you offer procedures like installing and uninstalling that should have the same functionalities for all applications (even "change" under Windows).
Countless times I've "installed" applications with a single shell script that came with them, and then had troubles removing such programs, having to look for single files. If the programmer uses the standard of the OS to make an executable that can be installed, that won't happen.
You can also easily view a list of the installed programs at any time.
Under Linux, additionally, if we're talking about a package manager, it is convenient for the user to have an easy way to download and install a program by just typing its name.
Last but not least, some applications are required to be installed and recognized by the OS (for example services in Windows).
I found a lot of tutorials how to build application with Ruby and Qt, but i have no idea how anybody else will be able to run it! I am using Ubuntu 11.10, ruby 1.9.2 with rvm and:
rbqtapi -v output "QtRuby 2.0.5 using Qt-4.7.4"
P.S. I have no idea how to build *.deb, it will be my first desktop app, not web.
please have a look on http://shoesrb.com/ this is the best way I heard off for writing GUI apps.
Shoes has now not it's greatest time, but we put our best time to make it better, give it a try and someone will help you.
In case you are in need of assistance just ask as question on #shoes IRC channel on freenode servers.
If you're sold on QT, then you will need your users to install all the support libraries for QT (and anything else), then you can upload a rubygem to rubygems.org for your users to download.
Once, they've installed the support libraries, you'd only need to update your rubygem, which is fairly quick and easy for updates.
You may also wan to look at visualruby. It uses GTK. Then you'd install the GTK libraries instead of the QT ones.
http://www.visualruby.net
As far as .deb packages go, I tried to research the same thing with little success. The rubygems packaging system is designed to distribute ruby programs, so it is the best way to go. Also, you'll need to install different support libraries for different platforms. If you look at visualruby's install page, you can see how to install GTK for Linux and Windows.
Good Luck.
I've written an application using gtkmm and libpcap under Linux. Of course, gtkmm depends on GTK+.
After porting it to Windows and attempting to distribute it, the feedback I received is that there are too many dependencies to install.
The user has to run installers for the GTK+, gtkmm, and winpcap runtimes before they can run my little application, which admittedly is a pain.
GIMP for Windows seems to use an installer that launches a GTK+ installer if needed, but doing that for three different libraries seems a little excessive, especially in terms of the installer size.
Is there a better way to distribute this? I believe winpcap actually has to install a service, so it probably has to run the installer, but maybe I could bundle the GTK+/gtkmm libraries in the runtime folder?
I'm quite a bit more familiar with Linux development, so I'm not sure what the best course of action is.
I highly recommend using a tool like Advanced Installer to deal with this for you. Making a proper installer on windows is a real headache, so it's well worth your time to use a GUI tool to help you out. AI (and other installers, for that matter) can install and manage windows services, prerequisites, and so on, and in the long run you'll save a lot of time by using a tool like this to help with your deployment. Advanced Installer in particular has very good support for managing different dependencies, along with their associated versions, and it can also install a native Windows service during the install process. They have a freeware version, but depending on the nature of your product, you might want to spring for one of the commercial versions.
Basically, if you're serious about deploying on Windows, you should invest the time (and money, possibly) to make a proper MSI-style installer. Not to knock the NSIS crowd, but making non-standard Windows installers always results in a lot more work for the developer, and a more uncomfortable experience for the end user.
If you want to manually package the GTKmm runtime, see this link at gnome.org for more details (look under Redistributing). You can also silently run the GTKmm installer using the /S flag.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I recently switched over to a MacBook Pro so I'm still really new at Mac software ecosystem. What is the best guide or what tips do you have to quickly get adept at using Mac for developing on both Mac/Unix and MS platforms (*.NET, SharePoint, SQL Server, etc) using VMWare Fusion? For example, I've setup NetBeans, FlexBuilder, Eclipse, TextMate, VMWare Fusion, OpenOffice, FireFox, dragged Terminal.app to my dock, upgraded the Ruby installation and related gems and so on... Things I've not done but looking at (based on other's experiences) include QuickSilver (is it all that different than SpotLight?), MacPorts (or Fink?), getting started with iPhone, Android, and so on. You can tell from my inexperience that I don't know what the best ways of doing things are yet, and don't want to get in the habit of just installing things and then leave files and stuff laying around slowing the system down. If you have any really cool tips about setting up a developer's Mac please share them!
Update: The nature of my job is I'm always working with new/different technologies, some Windows/MS based, some not, and with the Mac (and Fusion) even the MS based stuff is more enjoyable to me.
I'd highly recommend MacPorts - you can quickly and easily install new packages with a simple
sudo port install package-name
Instead of having to deal with browsing a website to find the distribution, download a disk image, and run an installer, or downloading a tarball and untarring it, running a configure script, and running make, etc.
Find some cash and invest in extra memory for your mac. I know it's probably not the tip you want to hear, but honestly, it'll save you frustration in the long run. Apple ships these babies with way less memory than they deserve, and charges an arm and a leg for an expansion. I had a Mac Pro (quad-core Xeon) crawl to a halt until I got some real memory in there.
Another tip is to get a decent keyboard and mouse. Don't trust Steve Jobs with that "single mouse key for everything" crap. It works for ichat, not for real programming. Get yourself a real keyboard and a real mouse with multiple buttons. Configure your middle scrollwheel button to open expose or whatever it is that shows you all windows. Configure your fourth button for magnification.
Also, from your description it sounds like you don't really know what it is that you want to develop. If you're doing mac-specific things, get used to XCode ASAP and lose the rest. If you want to be doing windows programming, not sure why you would use a mac. If you want Java, you have Eclipse, you're ready to go.
Install all the Mac dev stuff, XCode etc., so you get the compilers.
For sure, Macports. Look through their catalog and install all the usual packages you're used to from Linux or other systems -- including development-related stuff like flex/bison, emacs, doxygen, m4, perl, python, etc.
I prefer "iTerm" over the built-in terminal. Don't forget to "export COMMAND_MODE=unix2003" that makes a number of things work the way you're used to.
I haven't given URLs for any of the things I've mentioned. That's what Google is for.
First, install XCode. This gives you the Mac OS X development environment, but most importantly it also installs GCC so you can build both your own projects and applications that are distributed as source code. After that I'd suggest checking out TextMate, a popular text editor for Mac OS X (as seen in the Rails screencasts). If you're an Emacs/Vim user, there's Aquamacs and MacVim.
Invest in a good text editor. See the following questions:
https://stackoverflow.com/questions/100084/what-is-a-good-gui-text-editor-for-the-mac
Mac text/code editor
And by 'invest' I mean both money and/or learning time.
XCode is a good enough editor for Objective-C, but I wouldn't use it as my primary editor for everything.
(MacVim is my choice)
Install the latest version of Xcode (you will need this even if your not developing macintosh/iphone applications)
Install macports for most of your OSS tools (you'll need Xcode first)
To run tools that aren't OSS or are windows only install virtualbox I know there are alernatives (VM fusion is highly rated) but virtual box is free
Install an IDE if you do not want to use Xcode as your IDE (for example eclipse and netbeans)
Finally if you have some cash
Upgrade the ram if required (sw developers love ram especially if you are running a vm :) )
A second display, I can't imagine developing with less than two displays
I did the same in August this year, I bought a Macbook Pro (the small of them but with 200Gb 7200rpm and 4Gb of RAM), and I can tell you about my experience.
I'm a .NET developer and been ASP programmer for more than 10 years, so all I did was Microsoft related, never ever, aparat of installing and playing with Ubuntu, I had experience in the Linux world.
But my mind was on the iPhone SDK development and I even paid my inscription on the iPhone developer Program, all was lovely, I just loved my new Mac! But... Mac programming is a hobby for me, and believe me, Fusion, and even with my 4Gb and placed 2Gb for each OS, does not move as better as in a "normal" laptop, so after 4 month of struggling I formatted my laptop and created a Bootcamp partition (WOW, now I can use it for Windows!) and Fusion can run that Boot camp partition like a Virtual Machine image, and that is good for little times that I need to do something quick.
What you refer and as Uri mention, I don't thing that you know what you are going to do, having a "bunch" of apps in the laptop does say that, because, all you needed is Eclipse for everything else and XCode 3.1 with the SDK for Mac related apps, nothing more!
I was like you, but I realized that I didn't open any other programs that those 2, and except for compiling Objective-C code, was the Mac your better choice?
Instead of vmware fusion, virtualbox.org is free and worth a look.
My choice for a great all-around text editor would be TextWrangler.
Make sure you install Developer Tools (XCode) from your OS disc (and don't try and install GNU version over the top of it :P).
You've already done everything I have, except I'm using Virtual Box instead of VMWare.
I've found OpenOffice to be very slow compared to the actual Microsoft Office for Mac. If you have some budget, I'd recommend that over OpenOffice.
I can second the recommendation for QuickSilver - it's one of the best launchers I've used.
For IM clients, if you have contacts outside of the AIM network then you may want to try Adium - a free multi-IM-network chat client that has handy things like searchable transcripts.
Another general utility that I highly recommend is iStat menus - it gives you a realtime monitor of CPU, memory, disk, etc. right in your menu bar.
QuickSilver is a very good option and yes, it is a bit different from Spotlight due to the large number of plugins you can have. If you have NetBeans, maybe you don't need Eclipse. I'd even say that with TextMate (my editor of choice too), you don't need NetBeans either :)
I second MacPorts, it is more up to date than fink and closer to the FreeBSD ports system (where I come from).
Install Windows using Boot Camp. You can then dual boot between OSX and Windows, use windows as normal for MS development, and OSX for your other non MS stuff.