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

Rob Mensching rob at firegiant.com
Sat Apr 10 11:58:15 PDT 2021


Product/@Id='*' generates the GUID for you every time you build (great for Major Upgrades). You can see this by using Orca.

No reason (at this time) to assume this is a WiX Toolset issue.

- - - - - - - - - - - - - - -
I provide short answers on wix-users. Full commercial support is offered by FireGiant at http://www.firegiant.com/services


-----Original Message-----
From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of Mark Wan via wix-users
Sent: Saturday, April 10, 2021 12:22 AM
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Cc: Mark Wan <mark.in.d.house at hotmail.com>
Subject: Re: [wix-users] Why doesn't my multi-language MSI run when setup via Group Policy Object (GPO)?

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.



____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/



More information about the wix-users mailing list