Im Embarrassed And I Need A Grey Beard Access 97 Is The Bane Of My Existence How The Hell Do You Deploy It Silently
I’m Embarrassed And I Need A Grey Beard: Access 97 Is The Bane Of My Existence. How The Hell Do You Deploy It Silently?
Introduction
The post title probably resonates with any DevOps engineer who’s inherited legacy systems. Microsoft Access 97 – a 27-year-old database management system – still powers critical business applications in some organizations, despite being discontinued in 1997. The original Reddit post captures the frustration perfectly: “Please ignore the fact we’re still running Access 97… I need a better way of getting this bullshit deployed silently.”
Why does this matter in 2024? Legacy systems like Access 97 present unique challenges for modern infrastructure management:
- Compatibility issues: Running on Windows 11 requires workarounds
- Documentation scarcity: Finding pre-2005 documentation is nearly impossible
- Deployment complexity: Silent installations fail with cryptic errors
- Security risks: Unsupported software lacks critical patches
This comprehensive guide tackles the specific problem of silent Access 97 deployments in modern environments. We’ll cover:
- Understanding Access 97’s deployment architecture
- Creating reliable installation packages
- Debugging common Network Installation Wizard errors
- Implementing compatibility workarounds for Windows 11
- Automating deployments using modern DevOps tools
Whether you’re maintaining legacy systems or planning a migration, mastering these techniques preserves business continuity while buying time for modernization efforts.
Understanding Access 97 Deployment
Historical Context
Microsoft Access 97 (Office 97 Professional Edition) used the InstallShield Installation Engine with these key components:
- Setup.exe: Main installer executable
- LST files: Installation lists defining components
- STF files: Setup tables containing installation logic
- Network Installation Wizard 2.1: Tool for creating administrative installations
The deployment workflow involved:
- Creating an admin image via Network Installation Wizard
- Customizing the STF file for silent installs
- Running
setup.exe /s
with parameters
Why Silent Installations Fail
Modern systems break legacy installers in several ways:
- 16-bit components: Access 97 installers contain 16-bit executables blocked on 64-bit Windows
- File system redirection: Windows redirects Program Files access to virtual stores
- Dependency changes: Missing Jet Database Engine and ODBC drivers
- Security restrictions: Modern UAC blocks registry writes to HKLM
Key Deployment Components
Component | Purpose | Modern Equivalent —|—|— MSIEXEC.EXE | Legacy Windows Installer | Still present but incompatible SETUP.EXE | Main installer | Requires 16-bit emulation NETINST.EXE | Network Installation Wizard | Fails on modern systems SYSTEM.MDW | Workgroup security file | Must be manually configured
Prerequisites
System Requirements
- OS: Windows 10/11 (with 32-bit compatibility enabled)
- Architecture: x86 required (x64 needs 32-bit emulation)
- Dependencies:
- Windows NTVDM (16-bit subsystem)
- Microsoft Jet Database Engine 3.5
- Legacy ODBC Drivers
Preparation Checklist
- Enable 16-bit support:
1
dism /online /enable-feature /featurename:NTVDM /all
- Download original Access 97 installation media (CD or ISO)
- Extract files to a non-UNC path (C:\Access97)
- Disable antivirus real-time scanning during installation
- Create local admin account for installation context
Required Tools
- Microsoft Application Compatibility Toolkit (ACT) – for shim creation
- Orca MSI Editor – for modifying legacy MSI files
- Process Monitor – for debugging installation failures
Installation & Setup
Step 1: Preparing the Admin Image
- Mount original Access 97 ISO/CD
- Create administrative installation point:
1 2
net use X: "\\server\share" /user:admin password X:\> setup.exe /a
- When Network Installation Wizard 2.1 fails (as described in the Reddit post), use manual extraction:
1 2
expand -r X:\data1.cab C:\Access97Admin\ expand -r X:\data2.cab C:\Access97Admin\
Step 2: Modifying the STF File
- Open
setup.stf
in a text editor - Change silent installation flags:
1 2
[Startup] CmdLine=SOURCELIST="C:\Access97Admin\", COMPANYNAME="Contoso", USERNAME="Admin"
- Set compatibility mode:
1 2 3 4
[Options] ; 0x00000008 = WIN95 compatible ; 0x00000200 = WINXP compatible Platform=0x00000200
Step 3: Creating a Shim for Windows 11
- Launch Compatibility Administrator (part of ACT)
- Create new database > New > Application Fix
- Specify
setup.exe
and select:- Windows XP (Service Pack 3) compatibility mode
- Disable High DPI scaling
- RunAsAdmin
- Save as
Access97Setup.sdb
and install:1
sdbinst Access97Setup.sdb -q
Step 4: Silent Installation Command
Run the modified installer with logging:
1
setup.exe /s "/l*v C:\Access97Install.log" INSTALLDIR="C:\Program Files (x86)\Access97"
Verification Steps
- Check registry keys:
1
reg query "HKLM\Software\Microsoft\Office\8.0\Access" /v InstallRoot
- Verify file locations:
1
dir "C:\Program Files (x86)\Access97\MSACCESS.EXE"
- Test application launch:
1
start "" "C:\Program Files (x86)\Access97\MSACCESS.EXE" "C:\dbs\app.mdb"
Configuration & Optimization
Registry Tweaks
Add these keys to HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Jet\3.5\Engines\Jet 3.5
:
"Win16"=dword:00000000
"Win32"=dword:00000001
"PageTimeout"=dword:00000005
File System Permissions
Set proper ACLs for multi-user environments:
1
2
icacls "C:\Program Files (x86)\Access97" /grant "Users:(RX)"
icacls "C:\dbs" /grant "Users:(M)"
ODBC Configuration
Create 32-bit DSNs via C:\Windows\SysWOW64\odbcad32.exe
:
- Add System DSN
- Select “Microsoft Access Driver (*.mdb)”
- Set:
1 2
Data Source Name=LegacyApp Database=C:\dbs\app.mdb
Performance Optimization
- Disable animation in Access options
- Set
MaxLocksPerFile=9500
in registry - Allocate dedicated RAM via:
Application.SetOption "Max Buffer Size", 2048
Usage & Operations
Daily Maintenance
- Compact databases nightly:
1
"C:\Program Files (x86)\Access97\MSACCESS.EXE" "C:\dbs\app.mdb" /compact
- Rotate logs using legacy Jet logging:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Jet\3.5\Logging] "Enabled"=dword:00000001 "Directory"="C:\jetlogs"
Backup Procedures
- Lock databases during backup:
1 2 3
BEGIN TRANSACTION DBCC SHRINKFILE (app_log, 1) COMMIT TRANSACTION
- Use Volume Shadow Copy for consistent backups:
1
diskshadow /s backup_script.txt
Where
backup_script.txt
contains:1 2 3 4
set context persistent add volume C: alias SystemVolume create expose %SystemVolume% S:
Troubleshooting
Common Errors and Solutions
Error | Cause | Fix —|—|— “Invalid LST/STF file” | Unicode vs ANSI encoding | Save files as ANSI in Notepad++ “16-bit subsystem not available” | NTVDM disabled | Enable via DISM command “Could not write to registry” | UAC virtualization | Disable via reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
Debugging Tools
- Process Monitor – Filter
Process Name = setup.exe
- Application Logs – Check Event Viewer > Windows Logs > Application
- Jet Database Errors – Examine
C:\Windows\system32\jet.log
Critical Security Notes
- Isolate Access 97 systems from internet access
- Implement application whitelisting via AppLocker:
1 2 3 4 5
<FilePathRule Id="..." Description="Allow Access97" Action="Allow" UserOrGroup="Everyone"> <Conditions> <FilePathCondition Path="C:\Program Files (x86)\Access97\MSACCESS.EXE" /> </Conditions> </FilePathRule>
- Regularly audit database permissions:
1
SELECT * FROM MSysAccounts;
Conclusion
Deploying Access 97 silently in 2024 feels like digital archaeology, but with the right techniques, it’s manageable. Key takeaways:
- Admin images require manual extraction when Network Installation Wizard fails
- Compatibility shims are essential for modern Windows versions
- Registry tweaks overcome Jet database limitations
- Security hardening is non-negotiable for unsupported software
While this guide provides a stopgap solution, prioritize migrating to modern databases like SQL Server Express or PostgreSQL. For those needing extended support, consider virtualization strategies:
- Windows XP Mode on Hyper-V
- Application virtualization using ThinApp or App-V
- Containerization with legacy Windows containers (though not recommended for production)
For further reading:
- Microsoft Jet Database Engine Programmer’s Reference
- Windows Application Compatibility Toolkit Documentation
- Access 97 Resource Center (Archive.org)
Legacy systems won’t disappear overnight, but with these DevOps techniques, you can manage them effectively while planning their eventual retirement. </s>