installation - 如何通过 .msi 包修改 machine.config

我正在尝试创建一个将部署 .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>

我该怎么做?只是一个指针就可以了。谢谢。

最佳答案

如果您使用 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>

https://stackoverflow.com/questions/791455/

相关文章:

sql - 在 SQL 中选择多个字段的最大值的最佳方法是什么?

vb.net - 如何清除datagridview中的所有数据且不影响删除数据

php - 如何在 PHP 中 3 秒内切换到另一个页面?

vb.net - 将参数用于 Oracle ODBC 连接

visual-c++ - SetWindowPos() 函数不移动窗口?

ms-access - MS Access 交叉表查询参数

c++-cli - 如何将 System::IntPtr 转换为 char*

php - 当前文档的 PHP 中的最后更新日期

.htaccess - 需要 mod_rewrite URL 信息

delphi - "Long running method is done"有设计模式吗?