Re: Warp: RSS Package Manager

"Isak Savo" <[email protected]>
Newsgroups gmane.comp.autopackage.devel
Message-ID <[email protected]>
On Fri, May 30, 2008 at 3:12 PM, Neil Munro <[email protected]> wrote:
> 2008/5/30 Isak Savo <[email protected]>:
>>
>> On Wed, May 28, 2008 at 2:22 PM, Neil Munro <[email protected]> wrote:
>> >
>> > 2008/5/28 Isak Savo <[email protected]>:
>> >>
>> In your case, you'd need to check that mono  exists and that its the
>> correct version. We currently don't support this, but work has at
>> least started ( http://trac.autopackage.org/wiki/PackagingMonoApps ).
>
> Looking at the quick start guide and I get to the binreloc stage is there a
> C# mode for binreloc? I don't have any hard coded paths at the moment,
> everything is all contained in a relative directory so I do even need to use
> binreloc at this point?

Yes, you need binreloc. As long as you rely on getting external files
from the hard drive you'll need binreloc.

I did actually write a C# version of binreloc a year ago or so, It's
available here:
http://isak.livejournal.com/11225.html

Just grab the BinReloc.cs and include it in your project.

The blog post contains a short example on how to use it.

>> Ok, I understand.
>
> Is that practice frowned upon? I'm learning to program all by myself without
> any one really showing me better ways of doing things and best practice
> methods and I would prefer to get things efficient and right if I can. So if
> my work around is a bit nasty and hacky I'll move back to bitwise
> operations. Can probably fix the dependency by checking if the system is a
> unix one only then use Mono.Native.Unix.UnixFileProcess that works around
> the dependency issue on windows.

In C, you typically solve this using some abstraction layer, then
using #ifdef and/or separate source files depending on platform your
compiling on.

So you'd perhaps have:

bool change_permission(string file, string permission)
{
#ifdef UNIX
   chmod(file, permission)
#else if WINDOWS
   ChangePermission(file, permission);
#endif
}

This can be done similarily in C# too, but then you'd need to compile
once for each platform. Don't know if that's ok with you.

It all depends on how frequently you need to do this kind of stuff in
your code. If it was just one or a few places, I'd probably just do
like you did and call an external program:

System.Diagnostics.Process.Start("chmod", myFile + " " + myPermission);

If it was a lot of things and used at many places in the code, I'd
write an abstraction layer that took care of the platform specific
details

-Isak

---------------------------------------------------------------------
To unsubscribe, e-mail: autopackage-dev-unsubscribe-OfajU3CKLf1/[email protected]
For additional commands, e-mail: autopackage-dev-help-OfajU3CKLf1/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.