I had someone Create an offline installation of SQL Server Management Studio for me. It was a fun install. Sarcasm intended. The installer could be so much smaller I think if it didn't have so many language packs in one bundle. Why not, if building an offline installer, why not allow a language selection right there.
The first step was to learn to start the installer from the command line with:
SSMS_22.2.1\vs_SSMS_22.2.1.exe --noWeb
At this point, it would unpack files and then silently quit. No messages at the command line.
The logs indicate an invalid certificate:
Certificate is invalid: C:\temp\SSMS_22.2.1\vs_installer.opc Error 0x80131509: Signature verification failed. Error: Unable to verify the integrity of the installation files: the certificate could not be verified.
Three of the certificates can be installed with:
certutil.exe -addstore -f "Root" "SSMS_22.2.1\certificates\manifestCounterSignRootCertificate.cer" certutil.exe -addstore -f "Root" "SSMS_22.2.1\certificates\manifestRootCertificate.cer.cer" certutil.exe -addstore -f "Root" "SSMS_22.2.1\certificates\vs_installer_opc.RootCertificate.cer"
By looking at the logs, there is a fourth certificate, but missing, so needs to be copied and installed in a similar manner from Microsoft Windows Code Signing PCA 2024.crt (github) or Microsoft Windows Code Signing PCA 2024.crt (microsoft.com)
The final hurdle has to Microsoft ODBC Driver installation. It installs Microsoft ODBC Driver 18 for SQL Server ok. But it fails while installing Microsoft OLEDB Driver 19 for SQL Server with a message along the lines of:
This application requires Microsoft Visual C++ Redistributable for Visual Studio 2022 (x64/x86, version 14.38 at minimum)
It fails even when installing Latest supported redistributable version x64.
The secret here is that the x86 version also has to be downloaded and installed. So you should have both installers:
VC_redist.x64.exe VC_redist.x86.exe
As a final note, the installer logs are in C:\Users\<UserName>\AppData\Local\Temp and are named dd_setup_yyyymmddhhmm_errors.log.


