-2

I've created a program and would like to release it, but am currently struggling with dll dependency issues. How can I create a msi installer package that will properly install .dlls? Every solution I've found online so far has created msi packages that only include the exe.

TechNeko
  • 15
  • 4
  • MS has requirements as to how the VC++ runtime libraries are installed, so you're wasting time trying to do it yourself. You have to distribute them via the MS installer. You also should not be trying to put anything into the system folders; they belong to the OS, and modern Windows versions will prevent you from installing there (and replace anything you install with its own version anyway). Any system DLLs will already exist on the computer, and you don't need to distribute them at all. Other DLLs that are used only by your app should properly be installed in your own app's folder. – Ken White Jul 09 '19 at 00:58
  • And as a constructive bit of advice: You should break that wall of text into readable paragraphs, and remove some of the extraneous commentary. – Ken White Jul 09 '19 at 00:58
  • @KenWhite "any system dlls will already exists on the system" it's impossible for me to tell which dlls that are required are installed by the system and which were installed as an extra package. When you say 'the ms installer', do you mean a .msi file? Because that is quite specifically what the question is about, it's in the title. – TechNeko Jul 09 '19 at 03:47

1 Answers1

0

Short Answer: Generally, the most common runtimes are: Java, Visual Studio C/C++ Runtime, .NET Framework. Try installing these on a clean virtual and try launching your application. Debugging application launch check-list.


Modern Deployment: Many Microsoft runtimes that we used to deploy are now part of Windows. An exception is the Visual Studio C/C++ runtimes. I am not sure why they are not just included in Windows at this point. In general you should not pick single dll files to deploy, you need to locate a merge module, a setup.exe or an MSI to deploy the runtime. Commercial tools have features to help you download such bundles.

Setup: The basic, general steps to create a setup are described here: How to create a windows installer for multi language program with outside dependencies?

Specific Runtimes: One can generally determine runtime requirements by looking at the application files (experience - trained eye), looking at the application GUI (visual clues), checking dependencies using dependency scanner tools, talking to the developers of the application, checking file properties of files you find to depend upon (Company name is a good clue), etc... Then you verify and test this on a clean, virtual machine. You keep installing runtimes manually until your application works. In the section "The Complexity of Deployment" here you can find a listing of common runtimes and technologies.

Stein Åsmul
  • 34,628
  • 23
  • 78
  • 140