← Back to team overview

syncany-team team mailing list archive

Re: Windows Port

 

Hey everyone,

I already sent his information to Stefan yesterday, but I think it
might be interesting for other potential Mac and Windows version
makers:

----------- snip ----------
The core thing that's missing for the Windows version is the
integration in the Windows Explorer -- so the little blue and green
icons that indicate that something is going on in the background. On
Linux, I could just use the GPL'd Dropbox extension for the linux file
manager Nautilus, -- on Windows, this extension has to be coded from
scratch.

The Windows Explorer extension must be written in C or C++ I think.
Well there is an API for it, and I have really no idea how to do it,
because I have no idea how to write proper code in C ...

Here are a little more details (in case you're interested):

The basic communication between Windows explorer and Syncany should be
like this:
WinExplorer "Plugin"/"Handler" <----------TCP Socket---------> Syncany Server

^^ This is how the Linux version works, and how the Windows/Mac
version should therefore also work.

For that to work, you have to:
1) add a couple of registry keys (= for each overlay icon one key, i.
one for "Up-to-date", one for "Syncing" and one for "conflict")
2) implement three Explorer API methods: GetOverlayHandler,
GetPriority und IsMemberOf (see [1] for details)

IsMemberOf checks for every file that is displayed in the Explorer,
whether or not this file displays a certain overlay icon, i.e it
checks
1) whether file X is member of the group "Up-to-date"
2) whether file X is member of the group "Syncing"
3) and so on ...

As you can see this is quite inefficient, but that's how Microsoft does it...

Here is the MSDN entry of Microsoft:
[1] http://msdn.microsoft.com/en-us/library/cc144123%28v=vs.85%29.aspx

And here is a complete implementation of TortoiseSVN:
http://codesearch.google.com/codesearch/p?hl=en#XJa9F1p-bAg/trunk/src/TortoiseShell/IconOverlay.cpp&q=IShellIconOverlayIdentifier%20tortoise%20ismemberof&sa=N&cd=2&ct=rc

A sample communication between the Syncany server and the Explorer
plugin would look like this:
CLIENT > get_emblems
CLIENT > path <tab> C:\Users\username\Syncany-Folder\
File12.jpg
CLIENT > done
SERVER < ok
SERVER < emblems <tab> syncing
SERVER < done

Find attached a small PHP script that demonstrates how the
communication works (on linux -- but i guess the windows version works
similarly)
----------- snip ----------

Cheers,
Philipp


On Fri, May 27, 2011 at 9:00 AM, Stefan Mai <ubuntu@xxxxxxxxxxxxx> wrote:
> All,
> I'm working on a Windows port of Syncany, starting with the shell extension
> then moving on to other parts of the code. If anyone is interested in
> helping or has some free cycles for the effort, let me know.
> Thanks,
> Stefan
> --
> Mailing list: https://launchpad.net/~syncany-team
> Post to     : syncany-team@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~syncany-team
> More help   : https://help.launchpad.net/ListHelp
>
>

Attachment: talk-to-dropbox.php
Description: application/httpd-php


Follow ups

References