What are the required runtime files for a Windows application

It seems like there has been a recent change to the runtime dll’s needed for Windows builds. The documentation for the inno setup scripts seems to be out of date (no mention of XojoGUIFramework.dll, etc.). Can someone please confirm exactly which dll’s should be included in the installer, and where they need to be placed?

Here’s what I’m deducing based on what I’m seeing with the built app:

In the same folder as the executable:

  1. msvcp120.dll
  2. msvcp140.dll
  3. msvcr120.dll
  4. vccorlib140.dll
  5. vcruntime140.dll
  6. XojoGUIFramework64.dll

Included in the installer (most likely run silently in the background):

  1. vc_redist.x64.exe (or)
  2. vc_redist.x86.exe

Is this correct? Am I including things that shouldn’t be redistributed? Am I missing something?

Cheers.

-bill k

https://documentation.xojo.com/topics/windows/information_about_the_windows_universal_runtime.html

Thanks Langue, but unfortunately it’s not just the Visual C++ runtimes that are needed anymore. I’m just trying to get confirmation on what exactly needs to be included.

When you build include everything that the build puts there in the same relative positions

DLLs are needed for almost a decade. What do mean with “recent change”?

That depends entirely on what lib do you use in your app.

Do you read this?

https://documentation.xojo.com/topics/application_deployment/desktop/desktop_app_deployment.html

Ivan, I’m not sure when the changes were made, but until recently all required dll’s were placed by the compiler into the " Libs" directory, and all resource files (images, icons, sounds, etc.) into the " Resources" directory. Including these directories, along with the executable, was all that was needed (along with the VC++ runtimes if the user hadn’t kept up with their Windows updates). That’s what the documentation still states.

Now, some of those dll’s (at least the ones mentioned above) are being placed by the compiler into the executable folder directly (I have the “Use Build Folders” option turned off), and manually moving them in with all the other libraries doesn’t work. All I’m asking for is a list of what should be installed where. Norman’s answer of “include everything that the build puts there in the same relative positions” is a great suggestion, but it requires me to keep a list of all the files in my source code directory, and then compare that to all the new ones which the compiler happens to place there after compilation. That’s fine for some small projects, I can do that by eye, but when things start getting bigger it gets harder and harder to figure out what’s actually needed and what’s something that was there by mistake. At the very least the doc page: http://documentation.xojo.com/topics/windows/creating_an_installer_with_the_inno_setup_script_(64-bit_apps).html needs to be updated so that it doesn’t convey incorrect information.

Well, again, What are the required runtime files for a Windows application? All of the files that the compiler puts in the output folder, plus VC runtimes if you dont include them in the compiler options. The list of the files changes from architecture, plugins use, xojo functions used, and your other support files. You cant expect someone to tell what your proyect is going to need.

The documentation is correct, you are just not reading all of it. In It states very clear Sample Script, not by any meaans that is gooing to work as is for any proyect.

That depends if you compile with the option to Include the DLLs with your App, also a link for that in the page you are talking about

That has no sense at all, when you compile the app, it creates the just what’s actually needed, nothing more.

That is how it works. Inno Setup it is only a tool to package files and perform some actions, but it cant magically know what files you want to put in the package. There are LOTS of tools to do it. Even Inno Setup has Third-Party ones in its web page to just load a folder to create the script with all the files.

It’s all in both the links provided above. It hasn’t changed. The only recent change I recall is the option to include the runtime DLLs in the output folder or using the VC redist. Regardless, everything that shows up in the output folder needs to be included.

You’re all assuming that I use an output folder (“Use Builds Folder” turned on). I don’t. My built executable gets placed into the same directory as my source code, and for some reason now some of the dll’s that used to be placed into the “Libs” folder are getting placed into the same directory as the exe. Maybe it’s a 64-bit thing, maybe it’s a 2019R1.1 thing, but the dll placement is different. For now I’m going to turn on the “Use Builds Folder” option and just include everything that gets placed there, but why the change?

https://documentation.xojo.com/topics/application_structure/coding_guidelines_for_64-bit_apps.html

It is.

Read the section “Windows - Build Files” in the 64-Bit Guidelines for more detailed information.

That’s it. Thanks. It sounds like (at least for 64 bit app), the “Use Build Folders” option should be mandatory, otherwise its a little too easy to miss some required dll’s for the install.

Ugh … just ugh
Build it into a build folder and use copy file steps to copy what ever extra files you need for you app to the build folder
Then package all that up
It will make your life somewhat simpler and it WILL be possible to know what is needed