Old Windows accounting programs are built to last. Many small businesses and home users still rely on bookkeeping software written ten or fifteen years ago, and a lot of it needs .NET Framework 4.8 to run. If you have moved to Linux, Bottles gives you a clean way to recreate that Windows environment, install .NET 4.8 properly, and run your accounting program without keeping a whole Windows computer around. This guide walks through the process in the correct order, which makes all the difference.
Quick Answer
Create a new 64-bit Bottles bottle, set its Windows version to Windows 10, then open Dependencies and install dotnet48 before you install anything else. Let it finish completely, restart the bottle, and only then run your accounting program’s installer inside the same bottle. Installing .NET 4.8 first, into a clean bottle, is the key to avoiding launch crashes.
What You Need Before You Begin
- Bottles installed on your Linux system, ideally the latest version from Flathub.
- Your accounting program’s installer file, and your licence key or activation details if it needs one.
- About 30 to 45 minutes of uninterrupted time. .NET installation is slow and should not be rushed.
- A backup copy of your company data file, stored somewhere safe outside the bottle.
- An internet connection for downloading the runner and dependencies the first time.
A note on that backup: bottles are easy to delete by accident. Your accounts data is precious. Work on a copy during setup and keep the original untouched until everything is tested.
Step 1: Create the Right Bottle
- Open Bottles and click the plus button to create a new bottle.
- Give it a clear name, such as the name of your accounting program plus the year.
- Choose the Application environment if offered, or a Custom environment. For most desktop Windows software, Application is the sensible starting point.
- Keep the architecture at 64-bit, which is what .NET Framework 4.8 expects on modern systems, unless your program is a very old 32-bit-only release. If the program’s documentation says 32-bit only, choose 32-bit now, because you cannot change this later.
- Select a recent runner, such as the latest Soda or Caffe version available. If no runner is listed, open Bottles Preferences, go to Runners, and download one first.
- Create the bottle and wait for Bottles to finish preparing it.
In Bottles, bottle means the same as a Wine prefix: a self-contained folder holding a pretend Windows drive, registry, and installed programs. Everything here happens inside this one bottle.
Step 2: Set the Windows Version to Windows 10
Before installing .NET, tell the bottle to report itself as Windows 10.
- Open your new bottle and go to its Settings.
- Find the Windows version option and select Windows 10.
- Leave the other settings alone for now. In particular, do not turn on experimental graphics options yet; accounting software needs stability, not speed tricks.
This matters because the .NET 4.8 installer checks the Windows version. On an older reported version it may install reduced components or refuse to continue, and your accounting program may then fail in confusing ways later.
Step 3: Install .NET 4.8 From Dependencies
This is the heart of the guide. Bottles includes .NET Framework installers as ready-made dependencies, which is far simpler than downloading Microsoft’s installer and coaxing it through Wine manually.
- Inside the bottle, open Dependencies. Depending on your Bottles version this appears in the bottle’s settings or as its own section.
- Search for
dotnet. You should see entries such asdotnet40,dotnet45,dotnet472, anddotnet48. - Click install next to dotnet48 only. You do not need the older ones as well; .NET Framework 4.8 includes and replaces the earlier 4.x line for programs built on it.
- Wait. The process downloads components and runs several installers in sequence. Your screen may show little progress for long stretches, and the bottle may appear idle. This is normal. Do not close Bottles, do not install anything else at the same time, and do not put the computer to sleep.
- When Bottles marks the dependency as installed, close the bottle view and reopen it, or fully restart Bottles, so the new framework is picked up cleanly.
The Bottles documentation on dependencies explains how these one-click components work if you want more background while you wait.
How to Tell the Install Really Worked
After installation, the dotnet48 entry should show as installed rather than offering the install button again. The simplest real test is the next stage: your accounting program installing and opening without a framework error.
If the dependency install fails with an error, do not keep retrying in the same bottle. Delete the bottle, create a fresh one, update your runner, and repeat the steps in order. A failed .NET install leaves partial files that make later attempts unreliable.
Step 4: Install Your Accounting Program
- In the bottle, choose Run executable or Install program, and select your accounting program’s installer file, usually a
.exeor.msi. - Follow the installer as you would on Windows. Accept the default install location inside the bottle’s drive.
- If the installer offers to install its own copy of .NET, let it check and continue; since 4.8 is already present, it should detect the framework and skip reinstalling it.
- When installation finishes, find the program in the bottle’s program list. Use the menu next to it to add it properly if it does not appear.
- Launch it once before entering any real data. Complete any first-run setup, then close it.
If the program needs supporting pieces, such as a specific PDF printer for invoices or a database component, install those dependencies after the main program and test each feature you rely on: creating an invoice, running a report, printing, and backing up.
For a wider look at the approach behind this guide, our article on how to run Windows apps on Linux with Bottles and Wine compares Bottles with other options for older business software.
Step 5: Bring In Your Data and Test Carefully
- Copy your company data file into a folder inside the bottle, or point the program at a shared folder you have deliberately chosen.
- Open the data with the program and check balances, recent transactions, and customer records against your last known figures.
- Run a test report and a test print or PDF export. Printing and PDF output are the features most likely to need an extra dependency.
- Use the program’s own backup function and confirm the backup file appears where you expect.
Keep your old working setup until you have completed one full bookkeeping cycle in Bottles. Accounting software earns trust slowly.
Tips for Old Accounting Programs Specifically
- Keep the bottle dedicated. Use this bottle only for the accounting program and its .NET. Installing games or unrelated tools in the same bottle risks breaking a setup that handles your money.
- Export the bottle. Once everything works, use Bottles’ export or archive feature to save a copy of the working bottle. Restoring a known-good bottle is far faster than rebuilding .NET from scratch.
- Watch out for date and region formats. If amounts or dates look wrong, check the bottle’s language and locale settings as well as your program’s own regional options.
- Note the exact program version. Updates written for Windows sometimes change .NET needs. Read update notes before applying them inside the bottle, and export the bottle first.
- Fonts matter for invoices. If printed invoices look different, install the common Windows core fonts dependency in the bottle.
Common Mistakes
- Installing the accounting program before .NET. This is the classic error. The program’s installer may appear to succeed, then the app crashes on launch. Order matters: bottle, Windows 10, dotnet48, then the program.
- Installing every dotnet version in the list. More is not better. Stacking 4.0, 4.5, 4.6, and 4.8 attempts wastes time and can tangle the install. Install dotnet48 alone for 4.x programs.
- Interrupting the .NET install. It is slow by nature. Closing Bottles mid-install is the surest way to get a broken bottle.
- Using a gaming bottle with heavy tweaks. Extra graphics and latency settings help games, not ledgers. Start plain.
- Skipping the backup. Test with a copy of your data, never the only copy.
Conclusion
Installing .NET 4.8 in a Bottles prefix for an old Windows accounting program is very achievable when you respect the order of operations. Create a clean 64-bit bottle, set Windows 10, install the dotnet48 dependency and let it finish, then install your program and test it thoroughly with a copy of your data. Export the finished bottle so you never have to repeat the slow parts. With that careful setup, a dependable old accounting tool can keep serving you well on Linux for years.
Frequently Asked Questions
Is a Bottles bottle the same as a Wine prefix?
Yes, in practice. A bottle is Bottles’ friendly name for a Wine prefix: a self-contained Windows environment with its own drive, registry, and installed programs. Installing .NET in one bottle does not affect any other bottle.
Do I also need .NET 4.0 or 4.5 alongside 4.8?
For programs built on the 4.x family, no. .NET Framework 4.8 is an in-place upgrade of the 4.x line, so programs written for 4.5, 4.6, or 4.7 run on 4.8. Only install older separate versions if a program specifically needs .NET 2.0 or 3.5, which are a different family.
The dotnet48 install failed. What should I try next?
Update Bottles and your runner, delete the bottle, and start again with a completely fresh bottle, following the same order. Most failures come from a partial earlier attempt or an outdated runner, and a clean start fixes them.
Will my accounting program’s licence still activate?
Usually yes, if you have your original key, because the program sees a normal Windows-like environment. Very old programs tied to hardware fingerprints can occasionally object. Keep your licence documents safe, and contact the vendor if activation refuses.
Can I move this bottle to another Linux computer?
Yes. Use Bottles’ export feature to save the bottle as an archive, install Bottles on the new computer, and import it. Test the program and your data copy there before relying on it.


Leave a Reply