0

I've created installation using WIX V3 with localization to French. The installation works fine, but then we found out a weird thing:

After installing the produce we try to uninstall it. During the uninstall we press cancel, and then the installation performing rollback (which is fine). The problem is that during the rollback the statuses appears in English...

For Example:

screenshot

I've search for the strings in English & French wxl but couldn't fine them.

The installation was tested on French OS.

Does anyone have an idea, where those strings could come from?

Hila
  • 291
  • 1
  • 2
  • 9
  • They are in the ActionText table of your MSI: http://msdn.microsoft.com/en-us/library/aa367516(v=vs.85).aspx . Perhaps Wix doesn't have French strings for them. – Cosmin May 12 '11 at 07:27
  • Thanks for your hint. I've search WIX source code for the English string and found nothing. I don't have ActionText table in my msi... I didn't understand where the installer load the localized strings from. My ProductLanguage property is correct (1036). – Hila May 12 '11 at 08:11

2 Answers2

2

The ActionText table is not created by default.

You have to create it yourself by adding a UI element to one of your wxs files. This UI element has to contain ProgressText elements. Set the Id attribute of each ProgressText element to the name of a standard action. The inner text of such an element will overwrite the string that is shown for that particular action.

The ProgressText element also has a Template attribute. Take a look at the documentation for each standard action to define the appropriate template here: Standard Actions Reference. I don't know which specific action is displaying the string you are looking for.

It's best to not hardcode the values for each ProgressText element but instead use a localization file. Create two localization strings for each ProgressText element. One for the Template and one for the actual value.

Example

wxs file

<UI>
  <ProgressText Action="InstallFiles" Template="!(loc.InstallFilesTemplate)">!(loc.InstallFiles)</ProgressText>
  <ProgressText Action="CreateShortcuts" Template="!(loc.CreateShortcutsTemplate)">!(loc.CreateShortcuts)</ProgressText>
  <ProgressText Action="WriteRegistryValues" Template="!(loc.WriteRegistryValuesTemplate)">!(loc.WriteRegistryValues)</ProgressText>
  <ProgressText Action="RegisterUser" Template="!(loc.RegisterUserTemplate)">!(loc.WriteRegistryValues)</ProgressText>
  <ProgressText Action="RegisterProduct" Template="!(loc.RegisterProductTemplate)">!(loc.RegisterProduct)</ProgressText>
  <ProgressText Action="PublishFeatures" Template="!(loc.PublishFeaturesTemplate)">!(loc.PublishFeatures)</ProgressText>
  <ProgressText Action="PublishProduct" Template="!(loc.PublishProductTemplate)">!(loc.PublishFeatures)</ProgressText>
  <ProgressText Action="InstallFinalize" Template="!(loc.InstallFinalizeTemplate)">!(loc.InstallFinalize)</ProgressText>
</UI>

localization file

<String Id="InstallFiles">Installazione del archivos</String>
<String Id="InstallFilesTemplate">Archivo: [1], Tamaño de archivo: [6], Directorio: [9]</String>
<String Id="CreateShortcuts">Creacion de los atajos</String>
<String Id="CreateShortcutsTemplate">Atajo [1] creado</String>
<String Id="WriteRegistryValues">Escribir en registro</String>
<String Id="WriteRegistryValuesTemplate">Camino: [1], Nombre: [2], valor: [3]</String>
<String Id="RegisterUser">Registrar a los usuarios</String>
<String Id="RegisterUserTemplate">Usario: [1]</String>
<String Id="RegisterProduct">Registrar producto</String>
<String Id="RegisterProductTemplate">Producto: [1]</String>
<String Id="PublishFeatures">Publicar las características</String>
<String Id="PublishFeaturesTemplate">Caraterística: [1]</String>
<String Id="PublishProduct">Publicar el producto</String>
<String Id="PublishProductTemplate">Producto: [1]</String>
<String Id="InstallFinalize">Finalizar la instalación</String>
<String Id="InstallFinalizeTemplate">Finalizar [ProductName]</String>

note: i don't know spanish, i just let google translate it.

Here is list of the standard actions occuring in the correct order you might want to take a look at:

  • InstallInitialize Action
  • ProcessComponents Action
  • InstallFiles Action
  • CreateShortcuts Action
  • WriteRegistryValues Action
  • RegisterUser Action
  • RegisterProduct Action
  • PublishFeatures Action
  • PublishProduct Action
  • InstallFinalize Action

My knowledge is based on a book with the following ISBN: 978-1782160427

BdN3504
  • 1,693
  • 21
  • 29
2

Are you referencing the progress strings in your setup?

WiX doesn't include these by default, so you need to ensure that you manually reference them as follows:

<UIRef Id="WixUI_ErrorProgressText" />

Then as long as you're including the French language in your setup (fr-FR), the localized strings will be included.

saschabeaumont
  • 22,080
  • 4
  • 63
  • 85