wix XmlConfig - как определить переменные loc? - PullRequest
1 голос
/ 20 марта 2012

Мне нужно использовать XmlConfig для изменения моего файла machine.config во время процесса установки, что-то вроде этого:

  <util:XmlConfig
    Id="Machine_Config_Xml_Root"
    File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config"
    Action="create"
    On="install"
    ElementPath="//configuration/system.data/DbProviderFactories"
    Name="add"
    Node="element"
    Sequence="1">
        </util:XmlConfig>
        <util:XmlConfig
               Id="Machine_Config_Xml_4"
               File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config"
               ElementPath="Machine_Config_Xml_Root"
               Name="name"
               Value="My Data Provider"
               Sequence="2">
        </util:XmlConfig>
        <util:XmlConfig
               Id="Machine_Config_Xml_3"
               File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config"
               ElementPath="Machine_Config_Xml_Root"
               Name="invariant"
               Value="Sample.MyDataProvider"
               Sequence="2">
        </util:XmlConfig>
        <util:XmlConfig
               Id="Machine_Config_Xml_5"
               File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config"
               ElementPath="Machine_Config_Xml_Root"
               Name="description"
               Value="My Data Provider"
               Sequence="2">
        </util:XmlConfig>
        <util:XmlConfig
               Id="Machine_Config_Xml_2"
               File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config"
               ElementPath="Machine_Config_Xml_Root"
               Name="type"
               Value="Eli.Sample.MyDataProvider, Sample.MyDataProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5b9d34470b87a97f"
               Sequence="2">
        </util:XmlConfig>

        <util:XmlConfig
           Id="Machine_Config_Xml_Uninstall_1"
           File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config"
           Action="delete"
           On="uninstall"
           ElementPath="//configuration/system.data/DbProviderFactories/add[\[]@invariant='Sample.MyDataProvider'[\]]"
           Sequence="1">
        </util:XmlConfig>

Но он не компилируется из-за таких ошибок:

Переменная локализации! (Loc.msierrXmlConfigFailedOpen) неизвестна.

Как я могу определить эту переменную loc.msierrXmlConfigFailedOpen и другие? Я не хочу переходить на культуру en-Us (в этом случае переменные определены) - мне нужно сохранить свою текущую культуру и определить переменные loc самостоятельно. Как я могу это сделать и где в моем файле wxs я должен разместить объявления?

1 Ответ

2 голосов
/ 20 марта 2012

Эта фраза, на которую вы ссылались, встречается среди UtilExtension текстов. Это относительный путь в источниках WiX: /src/ext/UtilExtension/wixlib/en-us.wxl. Пока вы ссылаетесь на UtilExtension и создаете MSI для другой культуры (не en-US), вы получаете эту ошибку, потому что нет перевода этой и других фраз, которые вы используете вместе с UtilExtension.

Вы можете сделать следующее:

  • скопируйте en-us.wxl в ваши источники WiX и переименуйте в ту культуру, на которую вы нацелены
  • замените значения <String> элементов в этом файле соответствующими переводами фраз для целевой культуры
  • передать этот файл в light.exe (<localizations> section)

Возможно, вы захотите использовать концепцию восстановления языка, описанную в теме «Указание культур для построения» в WiX.chm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...