2009-04-26 2 views
1

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

<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> 

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

ответ

1

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

7

Если вы используете 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>