[MonoDevelop] Deployment for desktop applications

Derek JW Cahusac de Caux derek at azuregulf.com
Sat Nov 13 18:32:43 EST 2010


With some more help (many thanks) I progressed a bit further and seem to 
be able to install a working .deb file, but I also seem to have found a 
few of 'oddities':

1. I need to add this line

    m4_include ([expansions.m4])

into the file configure.ac just before the 3 SHAMROCK_EXPANDS_... lines
in order to avoid errors when running ./configure

2. I also need to edit the resultant configure file (on around line 539) 
and change the line

    ac_default_prefix=/usr/local
    to
    ac_default_prefix=/usr


These 2 changes then produce a (package_name) user executable as below

    #!/bin/sh

    exec mono "/usr/lib/myrss/myRSS.exe" "$@"

which is installed into the folder /usr/bin as myrss - as required on 
Debian systems, as I understand it...

Without these changes, the path in the script was not being resolved and 
was left as:

    #!/bin/sh

    exec mono "@expanded_libdir@/@PACKAGE@/myRSS.exe"
    <mailto:@expanded_libdir@/@PACKAGE@/myRSS.exe> "$@"

(or was only partially resolved with the @PACKAGE@ label being replaced 
with the package name)


3. in Monodevelop, I've found that the application's .desktop file's 
properties are not saved when MD is closed - the Target directory needs 
to be set to .desktop applications directory but reverts to Program 
files when MD is re-opened...(even though MD does say 'item saved')


Patches 1 and 2 above seem to be kludges and probably break 
'architectural independence' rules in Debian packaging, so any ideas on 
how to better fix this would be appreciated.

Point 3 above could be a bug? If anyone with more experience than me 
feels it is, I will log a bug report?

Cheers, Derek

Derek JW Cahusac de Caux emailed  on 01/11/10 19:26:
> Hi Jo, Michael and Quandary
>
> Once again, thanks for your various comments and pointers.
> It seems like I'm on the way to "sorting" this, but still have a lot 
> to learn and do still wonder if I'm going in the right direction...
> I've tried to systematically document my "packaging" process so far, 
> and have attached a PDF copy - any comments / corrections welcome.
>
> ps - wasn't sure if I could add attachments to this mailing list, but 
> noticed a few others had...
>
> Quandary emailed  on 25/10/10 22:07:
>>  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.
>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>
> _______________________________________________
> Monodevelop-list mailing list
> Monodevelop-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/monodevelop-list
>    
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/monodevelop-list/attachments/20101113/11159be1/attachment-0001.html 


More information about the Monodevelop-list mailing list