Как мне изменить machine.config через пакет .msi - PullRequest
1 голос
/ 26 апреля 2009

Я пытаюсь создать установщик, который будет развертывать поставщик управляемых данных .NET. Чтобы поставщик данных отображался как поставщик в раскрывающихся списках приложений, мне нужно добавить поставщика в разделе machine.config:

<system.data>
    <DbProviderFactories>
      <add name="My Data Provider" 
           invariant="Sample.MyDataProvider" 
           description="My Data Provider" 
           type="Eli.Sample.MyDataProvider, Sample.MyDataProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5b9d34470b87a97f" 
      />
    </DbProviderFactories>
</system.data>

Как мне это сделать? Просто указатель будет в порядке. Спасибо.

Ответы [ 2 ]

7 голосов
/ 27 апреля 2009

Если вы используете Wix, вы можете использовать элемент XmlConfig .

<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_2"
        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_2"
        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_2"
        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>
2 голосов
/ 26 апреля 2009

Вам нужно создать пользовательское действие установщика и добавить его в MSI для этого (я предполагаю, что вы используете для этого проект установки Visual Studio).

...