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.
What installer software for macintosh would you recommend? It has to support leopard & snow leopard. Be easily scriptable and not expensive.
Thank you,
Nava
Best answer is: don't.
The "Mac Way" is to provide just a .app that the user can drag into /Applications or ~/Applications. The .app is really a directory that contains all the program's assets: code, properties, imagery, etc.
The only time you need to build an installer package is when you're modifying the system. In the Mac world, that's seldom the right answer.
OS X's built-in installer can be scripted, either via shell script (or any other executable) at particular stages of the install, or customized much more pervasively using JavaScript. Read the Software Delivery Guide for OS X.
Well, simple situation. I happen to be a software engineer who uses mostly Delphi and C# for software development. Delphi is great for desktop applications while C# is ideal combined with ASP.NET for web applications. However, I am considering to teach myself more about software development for the Mac. Xcode and Cocoa would be the environments to start with. Learning new languages is no problem for me!
However, before starting to write code on a Mac, I first need to buy one and they're reasonable expensive so buying one is a decision that will take me a few months before I know which one I need. So, to help me right now, I would like to know the possibilities that I have to learn more about Mac development without the need for a Mac!
For example, does OS X work in a VMWare environment? Are the development tools also available for Windows? Is there a clear API overview of the OS X libraries?
Or should I first buy a Mac, play with it for a few weeks and then decide on how to develop software for it? In other words, should I start spending now, or in a few months? :-)
Perhaps a macmini would be the best bet but failing that:
MacOSX in VMWare: http://wiki.osx86project.org/wiki/index.php/Vmware_how_to
Development tools for windows? I'd stick to XCode as it can compile multi-binary apps.
Here's the clearest overview I can think of: http://developer.apple.com/referencelibrary/MacOSX/index.html
Hope this helps!
Mac OS X works in a VMWare...
Unfortunately XCode works only on Mac OS...
There are versions of Max OS, which runs on x86 machines. You can avoid buying a Mac PC, but you have to pay for the OS and XCode...
EDIT: Xcode is free
You definitely want a Mac if you want to develop for the Mac. Even Java requires local testing.
That said, Macs are not very expensive and run Windows too.
If you want to learn and start programming before you have a Mac, I recommend either Java or .NET, specifically Delphi Prism.
See here my own first experiment with Delphi prism:
http://leaukiprog.blogspot.com/2009/07/delphi-prism-first-experiment.html
You can write a program for Windows, keep GUI code and other code separate and later replace the Winforms GUI with a native Cocoa GUI on the Mac.
I found that Pascal is a good language for accessing native APIs from .NET. Everything looks cleaner than with C#, I think.
The new version of Delphi Prism is coming out on the 25th, as far as I know.
You might also look into the GNUstep project. This will let you experience objective-c a little bit before you make the plunge, albeit with the GNU libs instead of cocoa.
Good Mac (or iPhone) software is an artisan product; it reflects the culture and tastes of Mac (or iPhone) users. Because the Mac is a premium platform, users tend to be more sensitive to the feel and polish of the apps. Thus to successfully program for the Mac/iPhone or even grok the Cocoa frameworks properly, you have to grok the Mac user experience. Although many coming from the Windows or other-UNIX world try to skip this step, they do so at their own peril.
So, as a Mac developer (who also writes for other UNIX OSes), my recommendation is buy a Mac and start using it, full time if you can. A Mac Mini is completely adequate for development and will set you back only a few hundered dollars, including the OS. Consider that on Windows, this is often less than the price of a full VS license. Everything else (Xcode, libraries, etc.) are free.
Once you have a Mac and begin to grok the feel of things, you'll discover that there are a number of development options. Besides the Cocoa frameworks--which can be used from Python (via the built-in PyObjC bridge), Ruby (via MacRuby or RubyCocoa)—-there are a number of other options. Qt from Nokia and Mono are viable. Often cross-platform apps written in Qt or Mono are disliked on the Mac because they don't feel "native" (see above), but really the problem is not the framework. If you get the Mac user experience you can write a very passable Mac app in a cross platform framework. You just have to intend to write a Mac app, not get a Windows app working on the Mac.
If you code in RealBasic or Lazarus, you can run and compile your apps for both Mac OS and Windows (and Linux in the case of Lazarus). RealBasic isn't that popular outside of the Mac Platform, and isn't free. Lazarus is still a little rough around the edges, but is basically a free version of Delphi.
Lazarus is working hard on a native COCOA port with the next major version of FPC (though that will probably be available only in 2011)
Macs use Objective C. The APIs are very useful and there are many tutorials online. You'll be using Xcode, the Mac equivalent to Windows' Visual Studio and Linux's Glade.
I love making cross-platform applications. In a few hours I can prototype an application in Mac and publish it online. Then it'll take a day or two to port to Windows.
A Mac looks expensive, but it's not if you look what you get for your money.
It is entierly up to you if you buy one or not. I guarantee you'll have a lot fun with it, next to programming. If you want a cheap Mac, just buy a Mac Mini for 500 dollars, which you can connect to the Display you already own.
I recommend doing this on Mac OS X rather than Windows, but again: it's up to you.
P.S. You can use VMWare, but I think it's slow if you have less then 4 GB RAM.
A Mac really isn't that expensive if you go down the second hand route, I was put off by the price of brand new Macbooks so I got a late 2007 model for £350 and added an extra gig of RAM to it.
Reasonably priced, less hassle for development as well!
If you want to have just a general feeling about ObjC and the object libraries, why not giving a try to GNUStep?
Take a look at it here:
http://wiki.gnustep.org/index.php/Main_Page
Here are my requirements for a very very simple desktop gui I need to make.
Totally standalone - Needs to be double clickable with out the reliance on having anything installed on the users machine.
Simple GUI - Bare bones. Will be loading a list from a file that will be stored in a dropdown or w/e.
Rock solid on Windows distributions - XP, Vista etc
Bonus (Not strong requirement) - Could create a mac app from the same source
Background:
I am a java developer and have created a demo program that runs off a flash drive. You just pop it in and double click. It loads a GUI which reads a file and lets you select contents of that file for a drop down enter some other info and hit save and saves a new file with the details.
I am potentially limited by space so I don't think I have room to bundle a jre with the app. We do not want to require the users to have a JRE installed so it can be as dumbed down as possible.
So I am looking for alternatives and have little experience in standalone desktop apps so seek some advice.
I am not opposed to using something that will only work on Windows if it is that much stronger as we can create a separate program for Mac since they should all have a JRE installed.
So far I've been looking into python with py2exe, C++, C#. I don't really know the pro's and con's and would love some help.
Thanks
Delphi is very comfortable for these tasks. Easy Gui building, single exe with copy&go installations, Object pascal as language,...
http://en.wikipedia.org/wiki/Embarcadero_Delphi
As a developer coming from a Windows background, I'd always find the different Powertoys and Sysinternals apps as invaluable tools in aiding programming. Is there something similar for a developer to watch for in the Mac world?
A lot of those types of tools are included with the Mac OS, and some are available separately from Apple.
There's no Mac equivalent of the registry - everything goes in the file system somewhere - and you can use fs_usage to watch that. In a terminal:
sudo fs_usage
Check out Instruments, part of the Apple developer tools distribution.
Top 10 DTrace scripts for Mac OS X is an article that describes ten really useful tools that are Mac equivalents of some of the Sysinternals tools such as ProcessMon, FileMon, etc.
The post's author created some of the scripts when he made the DTraceToolkit, which he says Apple then customized and enhanced for inclusion by default in Mac OS X.
Some script names look like they end with the word "noop," which might be a bit confusing--it's actually "snoop." As in spying on system activity.
Mac OS X comes with a lot of unix tools like sar, top, etc. What metrics are you looking for specifically?
Not as such. Some of the Powertoys implement features that are built-in to the OS, some are available as various utility programs.
As for Sysinternals, there are quite a lot of them. If you want specifics I'd need a better idea of what you use, but you could probably duplicate 90% of the functionality just from a terminal window. Learning how to use bash and the normal Unix utilities would be a very good skill to have.
http://newosxbook.com/index.php?page=downloads provide almost exact counterparts, albeit in CLI mode - with the upside that they also work on (jailbroken) iOS.