cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox here.

Create, upload, and share

Find help to solve issues with creating, uploading, and sharing files and folders in Dropbox. Get support and advice from the Dropbox Community.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Placing EXE files in a shared Dropbox folder.

Placing EXE files in a shared Dropbox folder.

AGreenTejada
Helpful | Level 5

Hello all,

I made a small .NET Core app that publishes as an .exe with surrounding files. Its a small client manager that gets database information from a SQLite database (which is already saved in Dropbox) in the project folder. Now, I've been wanting to distribute by app to the rest of my workplace, but I've run into a few issues:

- sending the app as a large .zip file, especially when versioning, is going to get annoyting quick

- since most of the staff isn't computer literate, I'd have to make an installer to place project files in the correct place

- the database should be a MASTER database, which means that anytime someone is adding or removing data, the database should sync up with apps on other computers as well

After thinking about this for a while, one of the ideas I came up with was simply placing the entire app on a shared dropbox folder. Advantages (in my perspective):

- Dropbox will install all the files on everyone else's computers automatically

- Very easy version control: I'd just have to update the .dll files for my project and the exe, without touching the other dependences

- Cross-platform support for people who don't have .NET Core installed on their machines; I can place the runtime inside the Dropbox folder.

- I can just create a shortcut to the exe thatstaff can copy-paste to their desktop

- Data is all kept in one place instead of a "local-copy" and a "Dropbox-copy".

Overall, I see a lot of benefits in this approach, and was wondering if anyone else had implemented this idea with another app. Also, I wanted to know if there were any issues with multiple users accessing the same exe and databases at the same time. If two users are opening the same text file at the same time (from their local dropbox folders), and input data, how does Dropbox respond? Does it create a separate text file for each user, or does it prohibit the second user from changing the file?

Would appreciate any help on this.

4 Replies 4

Daphne
Dropbox Staff

Hey there @AGreenTejada, thanks for reaching out to us here!

There would indeed be advantages to hosting the app within a shared folder, however there's a few points I want to touch on here with you.

In general, we don't recommend syncing live databases with Dropbox. You could have issues with syncing as most programs would "lock" a file that is being used, which would prevent the desktop app from syncing the file.

You would most likely need to fully close the app used for editing before the desktop app would be able to sync the data, and you'd need to allow it to fully sync before opening on another device.

Onto your other question, if multiple people try to edit the same file then when the different sets of changes made by each user are saved, it will generate conflicted copies.

Having said that, it might depend on your specific use case and whether people would be directly editing the databases. Would you mind providing a little more info on which files would be edited for example? 

Let me know and we can go from there - thanks!


Daphne
Community Moderator @ Dropbox
dropbox.com/support


Heart Did this post help you? If so, please give it a Like below.
:arrows_counterclockwise: Still stuck? Ask me a question!
:pushpin: Tips & Tricks Find new ways to stay in flow or share your tips on how you work smarter with Dropbox.

AGreenTejada
Helpful | Level 5

Hey Daphne,

Thank you for the reply. As I understand you, it would be difficult to use a SQLite database because Dropbox would "lock" the file being used. But what if I used a JSON file, which is very close to a text file, then told the program to read and write to that? As a JSON text-file, it will only be read once on startup, and written to once on submitting client data. That should solve most problems related to conflicts, right?

Rich
Super User II

@AGreenTejada wrote:

But what if I used a JSON file, which is very close to a text file, then told the program to read and write to that?


Your problem isn't the type of data storage. It's the location.


Data is all kept in one place instead of a "local-copy" and a "Dropbox-copy".

THIS is your problem. Data isn't kept in one location. The database file, regardless of type, is stored locally on each person's computer. They're not all accessing the same file. They're all accessing a COPY of the same file. As changes are made, the copy is synced back to Dropbox and then back to everyone else's computer.

Any time mutliple people make a change at the same time, or close to the same time, a conflict will be created. Also, what happens if people can't sync (network problem, etc.)? Your program will still be able to read the copy of the file in their local Dropbox, but it may not be the same as the copy on the Dropbox server. Once that computer can sync again, it will create a conflict.

Dropbox is just not a good solution for any files that will be used like a database where the intent is to have multiple people access them simultaneously. It's not a matter of if you'll have a conflict; it's a matter of when.

Rich
Super User II

@AGreenTejada wrote:

But what if I used a JSON file, which is very close to a text file, then told the program to read and write to that?


Your problem isn't the type of data storage. It's the location.


Data is all kept in one place instead of a "local-copy" and a "Dropbox-copy".

THIS is your problem. Data isn't kept in one location. The database file, regardless of type, is stored locally on each person's computer. They're not all accessing the same file. They're all accessing a COPY of the same file. As changes are made, the copy is synced back to Dropbox and then back to everyone else's computer.

Any time mutliple people make a change at the same time, or close to the same time, a conflict will be created. Also, what happens if people can't sync (network problem, etc.)? Your program will still be able to read the copy of the file in their local Dropbox, but it may not be the same as the copy on the Dropbox server. Once that computer can sync again, it will create a conflict.

Dropbox is just not a good solution for any files that will be used like a database where the intent is to have multiple people access them simultaneously. It's not a matter of if you'll have a conflict; it's a matter of when.

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Rich Super User II
  • User avatar
    AGreenTejada Helpful | Level 5
  • User avatar
    Daphne Dropbox Staff
What do Dropbox user levels mean?