[Rd] Versioning Rtools ARP entries

Tomas Kalibera tom@@@k@||ber@ @end|ng |rom gm@||@com
Wed Mar 22 17:00:30 CET 2023


On 3/13/23 17:57, Tomas Kalibera wrote:
>
> On 3/13/23 17:31, Daniel Possenriede wrote:
>> Hi,
>>
>> If I am not mistaken, all Rtools 4.2 (and 4.3) revisions have the same
>> ARP [1] entries, i.e. all report version 4.2.0.1 (or 4.3.0.1). This
>> makes it difficult to determine the installed version (is it possible
>> to determine the installed revision?) and impossible for tools like
>> winget [2] to update Rtools to the latest revision, AFAICT.
>>
>> Would it be possible to track the version in the installer [3] for
>> future Rtools releases again, like it used to be in Rtools 4.0 [4]?
>
> Well the thing is that once you install Rtools 42/43, you can then 
> upgrade it internally (without Windows knowing). You can upgrade the 
> Msys2 part, or the MXE part, or both. The MXE part (customized for 
> Rtools) does have a single version number, which can be found in the 
> installation. The Msys2 part doesn't, afaik.
>
> See e.g. "Upgrading Rtools43" in 
> https://cran.r-project.org/bin/windows/base/howto-R-devel.html for how 
> to upgrade and how to find out the current version number of the MXE 
> part.
>
> So, right, I could e.g. add a non-decreasing unique version to the 
> build of the installer (e.g. based on that from the SVN where it lives 
> and the MXE part version originally included), but I doubt how useful 
> that would be, given that a particular installation can be 
> upgraded/modified by the user. It could actually be misleading.
>
> Note Rtools40 also could be updated by the user internally.

Hi Daniel,

I've extended the version information in a testing version of an update 
of Rtools43, more below, but first with some explanation of how the 
versioning works.

A version of an installed program in Windows is stored in the registry 
as "Display version": this is shown, together with "Display name" in the 
"Add/Remove programs menu" and it is used by tools such as winget to 
determine the version of an installed application (so e.g. also in 
"winget list").

An installer in Windows has in its meta-data has a "Product version" and 
a "File version" - one can see them in the Windows explorer via 
"Properties/Details". This can be set also for other files, not only for 
.EXEs of installers.  The distinction for general files is that "File 
version" refers to the individual file and "Product version" (shared for 
many files) to the application. The distinction for installers is 
usually that "File version" refers to the installer, but "Product 
version" to the application.

A Windows installer may set the display version and display name for the 
application it is installing, usually at the end. Many installers, 
including that of Rtools, don't do that explicitly, and a "Product 
version" from the installer meta-data is used, instead, for the display 
version. A "Product name" is used for the display name. In Inno Setup, 
used by R and Rtools, "Product version" is given by "AppVersion", "File 
version" by "VersionInfoVersion", and "Product name" by 
"UninstallDisplayName" (there are also some rules to take these values 
from other entries when not specified, more in Inno Setup documentation).

Historically, Rtools installer used two-component product version, e.g. 
"4.2" or "4.0". Therefore, winget could offer an upgrade from say 
Rtools40 Rtools42, but not between individual version of Rtools40 or 
Rtool42. The changes in file version you referred to in [4] didn't make 
a difference, because the "product version" stayed the same.

In the testing version of Rtools43, I've added one more component to the 
product version, which is the version of the toolchain+libraries (e.g. 
4.3.5548). So, one can now see the version of the toolchain+libraries in 
the "Add/Remove programs" list, and winget could (be made to) support 
upgrades within say Rtools43. Winget registry is maintained 
independently of R/Rtools, so it is up to those maintainer if they do 
that or not, but it should now be easy since product version has the 
information.

I've also extended the file version to have four components, e.g. 
4.3.5550.5548, where the last component is the version of the scripts to 
build the installer. This corresponds to version in the file name, e.g. 
rtools43-5550-5548.exe. The original file name is now also part of the 
meta-data.

When one manually upgrades the toolchain+libraries in an existing 
Rtools43 installation, the version information stored in the registry 
should be updated and the documentation will say how to do that (how to 
change the registry accordingly).

Best
Tomas

>
> Tomas
>
>>
>> Thanks!
>>
>> Daniel
>>
>> [1] 
>> https://github.com/microsoft/winget-pkgs/blob/master/FAQ.md#what-is-an-arp-entry
>> [2] https://github.com/microsoft/winget-cli
>> [3] 
>> https://svn.r-project.org/R-dev-web/trunk/WindowsBuilds/winutf8/ucrt3/rtools/rtools64.iss
>> [4] 
>> https://github.com/r-windows/rtools-installer/commit/7f23f0d0442d72922014ec4082c8bdd437364cef
>>
>> ______________________________________________
>> R-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list