Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Localization of single MSI & Component rules


3 replies to this topic

Pizzero

Pizzero
  • Full Members
  • 22 posts

Posted 20 June 2008 - 10:46

Component organization guidelines state that never two components should be created

"that install a resource under the same name and target location. If a resource must be duplicated in multiple components, change its name or target location in each component."

As I understand, the very consequence for creating a localized installer is that for a given set of localized code files (.exe, .dll, ...), which share the same name and target (but with different language identifiers) always multiple .msi packages (or one .msi and multiple transforms) must be created for every language to be included.

Owning InstallShield Professional Edition (and not the Premier Edition, which is capable of creating multiple localized transforms), I want to ask, if Community members would endorse localizing a single .msi file (where the user selects the language to install in the GUI) by
* authoring different components with equal file names and equal target, but different language codes for each file, in one .msi file (thus breaking component rules)
* and setting the ProductLanguage Property to the language selected by the user or (in case of repair/modify) to the language already installed,
so that files will be installed correctly (see "File Versioning Rules" - it states that the product language is used, when file versions are equal. I suppose the doc is referring to the corresponding property, but also in the stream file info of the final file and in the project setup of the uncompiled project (I don't know where this will be used) language identifiers are present and configurable).

I understand that the ProductLanguage Property will not reflect any more the language of the GUI (which can have side-effects concerning GUI, see MSI docs for ProductLanguage Property, which I could tolerate) but the installation should be carried out correctly.

Edited by Pizzero, 20 June 2008 - 14:06.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 June 2008 - 09:43

I don't think this would break the component rules. You shouldn't include the same file in multiple componewnts, but these are actually different files. To avoid reference count issues you should make sure that only one of these components is installed, by specifying mutually exclusive conditions, like you do using the language.

Pizzero

Pizzero
  • Full Members
  • 22 posts

Posted 23 June 2008 - 16:57

Dear Stefan,

thank you very much. All equal named files with equal target, which I have included for different languages have different byte content and are installed mutually exclusive.
However MSI docs specifically refer to the file name and not to (different or equal) content.

Apart from executables I do also include e.g. equal-named image-files, which do not even provide a language identifier.

Evaluating my MSI package I actually also get an "ICE 30 Error": ICE30 ERROR The target file 'App.exe' is installed in '[WindowsVolume]\...' by two different components on an LFN system: Application_uk' and 'Application_fr'. This breaks component reference counting.

Is then the ProductLanguage property the variable that will be used by the Windows Installer for deciding, whether to install a component with a code file with specified language?

Edited by Pizzero, 24 June 2008 - 10:02.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 24 June 2008 - 12:02

QUOTE
Is then the ProductLanguage property the variable that will be used by the Windows Installer for deciding, whether to install a component with a code file with specified language?

You put a conditional expression on the component, like
ProductLanguage=1033
but you could use any other condition, as required.