Release day 2021.7.28
today isRelease Day!
I am very proud to be here today to announce the second (and final) release of July 2021. One of the most important releases for the project, introducing a series of updates that not only improve the usability and stability of Bottles itself but also introducing a series of highly requested and important features.
As you have surely already seen, in the past few days we have tweeted a series of updates on our Twitter channel where we showed the Bottles installer system in action. This covers 50% of this release day’s update and introduces a new level of compatibility into the project, bringing Bottles even closer to the end user.
This is a feature that is still experimental and in early development, but is already accessible to everyone.
What are installers?
Installers are set of rules used by Bottles to install a program in a bottle, in a completely silent and automated way.
These installers take care of configuring the bottle, installing the necessary dependencies, installing the software and making it available to the user with settings that ensure that everything works in the best way.
The novelty introduced by our own installers is the use of the integrated dependency system. This in fact does not use external scripts to install and configure dependencies but uses the same dependency manager accessible from Bottles, so each one of these is automatically managed by Bottles, in the same way you would do it manually from the dependencies page.
Each installer configures the executable in your system (at the moment it does not happen if you are using Flatpak), allowing you to access it at any time from the applications menu of your Desktop Environment. These are done through the Bottles CLI, making sure they use your bottle’s configuration and environment.
At launch, only 3 installers are available (Epic Games Store, Steam, Uplay). This is indeed an experimental feature, we will add new installers in the future.
How to enable installers?
To test this feature, you must first enable it from the experiments in the Bottles preferences.
Once enabled, a new Installers item will pop up in the sidebar of your bottle page, click it and you will see the list of supported installers. To install one, just press Install and wait for the process to finish.
Once the installation is completed, you will see the new program in the applications menu of your Desktop Environment or in the programs list of your bottle. Quite easy?
News about Dependency Manager
This update brought a lot of news about Dependencies in Bottles.
It’s not just about bugfixes and improvements but a bunch of new features for installing dependencies. In fact, now the dependency manager can install fonts, extract archives, install multiple dlls in one go, uninstall other dependencies, support wildcards in the dependency manifest and set registry keys.
Thanks to these new features, Bottles now supports many new dependencies:
- art2kmin - MS Access 2000 runtime
- art2k7min - MS Access 2007 runtime
- d3dcompiler_43 - Microsoft d3dcompiler_43.dll
- d3dcompiler_46 - Microsoft d3dcompiler_46.dll
- d3dcompiler_47 - Microsoft d3dcompiler_47.dll
- d3dx9 - Microsoft d3dx9 DLLs from DirectX 9 redistributable
- dirac - The Dirac directshow filter v1.0.2
- dotnetcore3 - Microsoft .NET Core Runtime 3.1 LTS
- dotnet35 - Microsoft .NET Framework 3.5
- dotnet35sp1 - Microsoft .NET Framework 3.5 Service Pack 1
- dotnetcoredesktop3 - Microsoft .NET Core Desktop Runtime 3.1 LTS
- faudio - FAudio (xaudio reimplementation, with xna support) builds for win32
- ffdshow - ffdshow video codecs
- ie8_kb2936068 - Cumulative Security Update for Internet Explorer 8
- jet40 - MS Jet 4.0 Service Pack 8
- msxml6 - Microsoft Core XML Services (MSXML) 6.0
- riched20 - Microsoft RichEdit Control 2.0 (riched20.dll)
The allfonts dependency has been changed by addressing a serious flaw, namely the registration of fonts in the registry. This prevented applications from detecting fonts and then being able to use them.
This update introduces a new CLI for Bottles which is used by default by applications installed on the system via Bottles installers.
This can of course also be used by the end user to run an application in a bottle.
The main novelties of this new CLI are the support for .lnk files and the ability to declare the bottle in which to start the program (without showing the graphical interface).
bottles -l path/to/executable.lnk -b myBottle
bottles -e path/to/executable.exe/msi -b myBottle
Read more about the new CLI, here.
Of course you can also run
.lnk files from the Bottles interface, the
same way you run an executable (
exe/msi) or bat script.
The UI has also seen some updates and improvements. The first of all and easy to notice is the presence of the icons in the sidebar of the bottle.
Now spinners are displayed in the interface during when Bottles is performing some tasks, such as running an installers, extracting components and dependencies.
This also fixes a bug in installing heavier dependencies. In fact, before the process of extracting packages was not monitored and the task was completed even when it was still in progress.
We have also restored the preferences buttons on the bottle creation screen. In fact, it will be possible to install new components before creating a new bottle, simply by clicking on the dedicated buttons.
Some interface details have been refined, e.g. the buttons on the details screen, the breeze and yaru themes, the list of dependencies and installers and much more (let’s see if you notice them).
There are two main new features in the program list. The first is a new item in the context menu of each program, which allows you to navigate the path of the executable.
The second is the ability to manually add a program not seen by Bottles, in the programs list.
More info about this feature, here.
All other changes
There are a lot of other changes and improvements in this release. Below are other noteworthy ones, for all the others I refer you to the GitHub profile.
- Cab extraction now support lowercased extensions
- When installing a new runner, winemenubuilder is blocked to prevent the creation of broken desktop entries
- The bottle root is now set as the working directory for all executed commands. This will be improved in the future, leting the user to choose a different working directory per program
- Fixed a bug in the dependency manager showing them installed even though the process was still running
- Fixed a bug that prevented states from being sent to the bottle (kill, shutdown, reboot, ..)
- Fixed a bug on processes listing (reported in Arch Linux)
- Fix the wrong crash log path on Flatpak
- Fixed an issue causing Bottles to detect downloaded dxvk even when it fails to install
- Fixed a bug that cause some programs to not be placed in Programs section
- Fixed a bug that cause Bottles to crash when a component download fail
- Fixed a bug in adding registry keys with spaces in name
- Uninstallers are now no longer displayed in the Programs list
- Disable uninstaller button for dependencies installed from cab files and archives
- Display a warning if cabextract is missing or unreachable
- Display a warning if testing repositories are enabled
- Display a warning if experiemental features are enabled
- Several improvements in runner management
- Provide visual feedback during a state restoring (if versioning is enabled)
- Optionally show the bottle update date on the bottles list
- Chinese (Simplified) translations thanks to @Yuzaihhhh and @sr093906
- Japanese translations thanks to @jatin-cbs
- Hungarian translations thanks to @ovari
- Polish translations thanks to Krzysztof Marcinek
- French translations thanks to @julroy67
- Russian translations thanks to @tacitcoast
- Italian translations thanks to @blackcat-917
As mentioned, the news are so many and listing them all is a hard job, but I want to close this post with just a demo page (in early development as the installer support after all).
This is the first integration of a new page of the site dedicated to installers. This in the future (when the feature will be stable in Bottles) will provide all the installers available with the possibility for the community to comment on them and publish new ones. For now, if you want to propose an installer, you can open a PR in the dedicated repository. At the moment there are no guidelines and the instructions are not documented but feel free to open an issue and ask.
As usual, I would like to thank all the users who have helped with suggestions, contributions and ideas, throughout the development process of these weeks.
The Bottles community is growing and I am happy to see that it is a healthy community and that it understands what the values and objectives of the project are. Heartfelt thanks to everyone _Mirko.
~ Bottle’s Developers