2009-04-26 90 views
1

我正在嘗試創建一個將部署.NET託管數據提供程序的安裝程序。爲了使數據提供者出現在應用程序下拉列表提供商,我要補充的供應商在machine.config的部分:如何通過.msi包修改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> 

我該怎麼辦呢?只要一個指針就可以。謝謝。

回答

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>