Information about Flutter Windows Runner.rc file
Tags: flutter, windows, desktop
Published: 2024-01-04 17:15:45

I am relatively new to Flutter and trying to understand the fields that appear in the `windows/runner/Runner.rc`. Is there any official documentation that describes each of these fields, their specific purpose, and any limitations in their values?

So far, all I've found in the official documentation is this:

[Building Windows apps with Flutter](https://docs.flutter.dev/platform-integration/windows/building)

Which provides this very vague advice:

> Finally, further properties for the app executable itself can be found in the Runner.rc file in the windows\runner directory. Here you can change the copyright information...

For example, for `ProductName`, it would be helpful to know how it is used (e.g. displayed in the title bar, present in the file metadata, etc.). It would also be helpful to know about any limitations to its value (e.g. cannot include _XXX_ characters) or limitations to its length (e.g. cannot be longer than _NNN_ characters). While the name clearly states that it is a "product name", this is very limited information.

This same sort of information would be helpful for each of the fields. I'd appreciate anyone sharing whatever information, beyond the obvious, you can about each of the fields.

I'll get it started by listing the fields that appear in the template file and my best guesses for the ones I (might) care about, which appear in the `StringFileInfo` block.

`CompanyName` - The company name. My guesses: Provides value of `AssemblyCompanyAttribute` for assembly. No character limitations. Length limitation is unknown. Appears in "About" dialog for application and in executable/DLL file details.

`FileDescription` - The file description. My guesses: Provides value of `AssemblyDescriptionAttribute` for assembly. No character limitations. Length limitation is unknown. Appears in "About" dialog for application and in executable/DLL file details.

`FileVersion` - The file version. My guesses: Provides value of `AssemblyFileVersionAttribute` for assembly. Limited to characters (and format?) valid for a version (`n.n.n.n`). Length limitation is unknown. Unknown appearance.

`InternalName` - The internal name. No guesses.

`LegalCopyright` - The legal copyright. My guesses: Provides value of `AssemblyCopyrightAttribute`for assembly. No character limitations. Length limitation is unknown. Appears in "About" dialog for application and in executable/DLL file details.

`OriginalFilename` - The original file name. No guesses.

`ProductName` - The "friendly" name of the product. My guesses: Provides value of `AssemblyProductAttribute` of assembly. No character limitations. Length limitation is unknown. Appears in Window title, "About" dialog, and in executable/DLL file details.

`ProductVersion` - The product version. My guesses: Provides the version for the assembly (`Assembly.GetName().Version`). Limited to characters (and format?) valid for a version (`n.n.n.n`). Length limitation is unknown. Appears in "About" dialog for application and in executable/DLL file details.

The following other fields also appear. I have no guesses with regard to them:

`ICON`
`VERSION_AS_NUMBER`
`FILEVERSION`
`PRODUCTVERSION`
`FILEFLAGSMASK`
`FILEFLAGS`
`FILEOS`
`FILETYPE`
`FILESUBTYPE`

I'll try to come back and summarize/edit a final response that adds whatever information people are willing to share. If someone has access to the official Flutter documents, feel free to reuse whatever information is in that final response.

Thank you.