-2

This is a very general question and also maybe stupid question: How should I build / structure my software if it depends on some other software to work? I know that package managers exist, but what if I just want to ship my app as a .exe file or something similar?

For example, when working on a rust app (e.g. Tauri or something), I can only include software into my app that is written in rust and belongs to the cargo ecosystem. But what if my app needs for example some sort of command line tool like ffmpeg or Latex to work, which doesn't have a good rust implementation?

For me, it seems like there are two options to handle this case:

  1. The app requires the specific command line tool / whatever to be installed on the PC, or you ship an installer for the software which installs both the software itself and the required tools (but then you'd be forced to write an installer)
  2. The required software is included as a binary into the app. So when building the app, you not only compile the app itself but also the required software. But this might not make sense if the required software is very big, and it could also lead to duplicates with other software (if everyone uses this approach). However, for lightweight stuff it could be ok. But I don't know how much of the app you could pre-compile for the different platforms, and how much of the app should only be compiled on the user's machine when installing the app.

This might be a dumb question, but I'm quite new to developing software for other users and I didn't find anything useful to this topic on the web.

Thanks everyone!

3
  • "Best" is subjective however a common solution is just to check if the require dependency is installed during startup and raise an error if not. The error message may include a download link and/or instructions on how to install the dependency. Commented Sep 24, 2024 at 14:57
  • 1
    See also: How cross platform and different programming languages deployment is done? Commented Sep 24, 2024 at 15:26
  • Thanks all of you. I think that helps me Commented Sep 24, 2024 at 16:19

1 Answer 1

2

This very much depends on the platform.

Linux systems generally have package managers which can easily specify dependencies. It is also considered more reasonable to make the user provide dependencies themselves. So for a Linux application which needed ffmpeg and Latex it would be less common to ship your own copy.

Windows systems on the other hand expect everything to be shipped together. Make an installer, dump everything you need in a folder in Program Files.

3
  • It's really about the user base. There are clueless linux users and power windows users. But yeah, generally, your windows apps need to do more hand holding. Just remember some of these people are just smart enough to file useless bug reports. Commented Sep 24, 2024 at 15:17
  • don't forget com+ and the GAC! Commented Sep 24, 2024 at 18:16
  • Even Microsoft realised the GAC was a bad idea, and abandoned it with dotnet core Commented Sep 25, 2024 at 8:47

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.