[wix-users] Why doesn't my multi-language MSI run when setup via Group Policy Object (GPO)?

Mark Wan mark.in.d.house at hotmail.com
Sat Apr 10 00:22:24 PDT 2021


Hi,

After some investigation, I noticed that when the Product ID in Product.wxs is set to asterisk (*), build and deployed to the client machine via GPO, the installation will fail with error 1605. However, there is no issue if the Product ID is set to an explicit GUID before building. Manual installation is still working as per intended when Product ID is set to asterisk.

Just in case some of you have missed it, I have reported this as a bug<https://github.com/wixtoolset/issues/issues/6417>. You can view more logs there. I am not sure if this is related to WIX or not so pardon me if it isn’t.

Before starting, ensure that you have

  1.  Downloaded building multi-language msi tutorial<https://github.com/PacktPublishing/WiX-3.6-A-Developer-s-Guide-to-Windows-Installer-XML/tree/master/Chapter%2012/Single%20MSI%20-%20multiple%20languages%20example>
  2.  Setup a Windows Server and Windows client machine that can receive any GPO updates from the Windows Server machine. For reference, I used Windows Server 2012 R2 for server and Windows 10 Pro for client, all are VMs.
  3.  Setup a shared folder with read and execute permissions in Windows Server machine that will be used to store MSIs and is accessible by the Windows client machine.
  4.  tested that the GPO deployment is working.

Steps to reproduce:

  1.  In the multi-language msi tutorial folder, open Product.wxs and replace the GUID in line 4 with asterisk (*).
  2.  Run BuildMSI.bat to produce the MultiLanguage.MSI in Output folder
  3.  In Windows Server, add MultiLanguage.MSI to the shared folder
  4.  Open Group Policy Management and create a GPO under Domain > Group Policy Objects.
  5.  Right-click the newly-created GPO and click Edit
  6.  Under User Configuration > Policies > Software Settings, right-click the right panel, select New > Package... and add MultiLanguage.MSI from the shared folder
  7.  Set Deployment Type to Assigned and click OK.
  8.  Right-click TestInstaller, select Properties and go to Deployment tab.
  9.  Set Deployment Options to Install this application at Logon, Installation user interface options to Basic, and go to Advance and set Ignore language when deploying the package.
  10. In Windows 10 Pro client, open command prompt and run gpupdate /force /boot to trigger the GPO to update.
  11. Re-login to Windows 10 Pro client and check Event Viewer and C:\Windows\Temp\MSI*.txt logs. You will see that there is an error 1605 and the installer failed to run.

You may view the failed and successful logs and MSIs in Annex II here<https://github.com/wixtoolset/issues/issues/6417>.
Best Regards,
Mark

From: Mark Wan via wix-users<mailto:wix-users at lists.wixtoolset.org>
Sent: Wednesday, 31 March 2021 10:59 pm
To: wix-users at lists.wixtoolset.org<mailto:wix-users at lists.wixtoolset.org>
Cc: Mark Wan<mailto:mark.in.d.house at hotmail.com>
Subject: [wix-users] Why doesn't my multi-language MSI run when setup via Group Policy Object (GPO)?

Hi everyone,

I have built a multi-language MSI (view the Notes below). It is working as intended via manual installation in different OS languages and also via silent installation e.g., msiexec /i .\installer-English.msi /qn



However, when the client machine (Windows 10) tries to install my multi-lingual MSI via Group Policy Object (GPO) obtained from the server machine (Windows Server 2012 R2), it failed to install and it seems to hit an error 1605 (Please see the attached MSI log file). From my research, I have noted that error 1605 means the installer is trying to do something on an uninstalled product but I’m not sure why it is only happening via GPO.



Does anyone know how to resolve this issue? Please check the Useful Notes below for more clues.



Best Regards,

Mark





Useful Notes:

Workaround: Add neutral language ID 0 to the list of language code supported

However, this would cause the installer to always run in English no matter the OS’s region format/language when user runs the installer manually.

Building the MSI

I built the multi-language MSI by following these steps in http://www.installsite.org/pages/en/msi/articles/embeddedlang/

  1.  From Wix project, build project to produce culture-specific MSIs e.g.,
installer-English.msi
installer-German.msi
installer-Spanish.msi

  2.  Generate MST file from each culture-specific MSI using MSITRAN.EXE and using English msi as base e.g.,
MSITRAN -g .\installer-English.msi .\installer-German.msi .\de-de.mst
MSITRAN -g .\installer-English.msi .\installer-Spanish.msi .\es-es.mst

  3.  Embed MST file to base MSI (en-US) using CSCRIPT e.g.,
CSCRIPT .\WiSubStg.vbs .\installer-English.msi .\de-de.mst 1031
CSCRIPT .\WiSubStg.vbs .\installer-English.msi

CSCRIPT .\WiSubStg.vbs .\installer-English.msi .\es-es.mst 3082
CSCRIPT .\WiSubStg.vbs .\installer-English.msi


  1.  Update package language code using CSCRIPT e.g.,

CSCRIPT .\WiLangId.vbs .\installer-English.msi Package 1033,1031,3082



Setting the GPO



I have set the GPO package properties under User Configuration > Policies > Software Settings > Software Installation Package > Properties > Deployment as such:-

  1.  Deployment type: Assigned
  2.  Deployment options: Auto-install this application by file extension activation & Install the application at logon
  3.  Installation user interface options: Basic
  4.  Advanced Deployment options: Ignore language when deploying this package & Make this 32-bit X86 application available to Win64 machines

Also, I have noted that under Properties > General > Language, it is always German. When I add neutral language id 0 in the MSI, it becomes Neutral.




More information about the wix-users mailing list