[MonoDevelop] Deployment for desktop applications

Quandary quandary82 at hailmail.net
Mon Oct 25 17:07:20 EDT 2010


  Well, everything is relative.

If you consider that last month I spent a week writing a windows service.
And then another one-and-a-half week for writing a working installer 
that sets the right folder permissions...

Makes spending a day on a linux package a little less negative.
The bad thing about Linux installers is really the segmentation, .deb, 
.rpm, ports.
Basically writing a Linux installer is much simpler and you can do it 
much faster and it works far better than a Windows installer. However, 
what kill's you is that you have to write an installer for every kind of 
Linux, with specific requirements for specific versions, etc. Basically, 
when you want to write a working installer for a mono application on 
Linux, the problem is you need to write an installer for mono & co. as 
well, which is what really kills your productivity.


Am 25.10.2010 19:34, schrieb Derek JW Cahusac de Caux:
> Thanks Michael & Quandry for your responses - I'll investigate further 
> along the lines you've both suggested but this does raise a few 
> questions, if not concerns...
>
> Michael mentioned that 'there hasn't been a huge demand' for packaging 
> which makes one wonder what developers are using MD for and how - is 
> there any 'public' info on this? Are we looking at tens, hundreds, 
> thousands of MD developers..?
>
> From looking at the various 'packaging' options out there (almost all 
> seem to be command line driven) it seems that this is huge task simply 
> because of the open systems arena - packagers are trying to be all 
> things for all systems...maybe MD could start by implementing 
> packaging (compiled binaries+dependencies+files, installer, launcher 
> and un-installer) for just one "system"...any thoughts?
>
> Quandary emailed  on 25/10/10 11:23:
>>  I still wanted to add 3 things:
>>
>> 1. As a commerical solution, you can use InstallAnywhere (.bin files 
>> you see for example in Google Earth, Sybase, or Oracle Java). I'd not 
>> do that however, as it doesn't check for dependencies.
>>
>> 2. The installed version of mono on all the different Linux 
>> distributions and distribution versions is not quite the same. So if 
>> you for example depend on mono 2.6 (as opposed to 2.4, current Ubuntu 
>> Lucid Lynx version), you'll basically have to package mono 2.6 as 
>> well. This happended to me because there's a bug in 2.4 concerning 
>> XML and XmlTextReader/writer encoding.
>>
>> 3. If you have a RPM file, you can use the Debian-Tool 'alien' to 
>> convert it into a .deb file automagically (careful).
>>
>>
>> Am 25.10.2010 00:02, schrieb Michael Hutchinson:
>>> On Sat, Oct 23, 2010 at 10:26 AM, Derek JW Cahusac de Caux
>>> <derek at azuregulf.com>  wrote:
>>>> Hi - I'm new to MD and C# (thoroughly enjoying both) and am now at 
>>>> the stage
>>>> where I'd like to 'package and ship' simple C# desktop applications 
>>>> to end
>>>> users (on both Linux and Windows).
>>>>
>>>> These tutorials from Visual Studio look fairly good:
>>>> http://msdn.microsoft.com/en-us/library/k3bb4tfd%28v=VS.100%29.aspx
>>>> http://www.dreamincode.net/forums/topic/58021-deploying-a-c%23-application-visual-studio-setup-project/ 
>>>>
>>>>
>>>> Any pointers to the equivalent guides in MD would be most appreciated.
>>>>
>>>> I really want to avoid asking end users to extract tarballs, drop 
>>>> down to
>>>> Terminal and run " sudo ./configure&&  make&&  make install" if at all
>>>> possible....
>>> Unfortunately MonoDevelop doesn't have any built-in support for
>>> packaging. The best it can do is create a zip of binaries, or a
>>> tarball with build/install scripts. I know, we've wanted packaging
>>> support for a while
>>> (http://monodevelop.com/Developers/Tasks/Packaging) but it's difficult
>>> to implement fully and there hasn't been huge demand.
>>>
>>> Linux packaging depends on the distro, unfortunately - the major
>>> package formats are rpm (openSUSE, SLE*, Redhat, Centos, Fedora, etc)
>>> and deb (Debian, Ubuntu, etc.), though a few distros use other systems
>>> (Gentoo etc).
>>>
>>> I've only used RPM myself. The way it works is that you write a
>>> specfile: a description, a list of dependencies, the commands to build
>>> and install (or simply unzip and cp) the app, and a list of files to
>>> package up. You then feed it to a tool that builds and installs the
>>> package into a fake root and collects the installed files and packages
>>> them up. I think deb is fairly similar. If you're lucky, you might be
>>> able to make packages that are usable on several distros or versions,
>>> depending how similar they are.
>>>
>>> If your app is open-source, I suggest you investigate the openSUSE
>>> Build Service which, given source and spec files, can build packages
>>> for multiple distros automatically. The packages already there will
>>> provide good examples to base yours on.
>>>
>>
>>
>>



More information about the Monodevelop-list mailing list