gpt4 book ai didi

deployment - 如何部署不同的 App.config 值(使用 WiX)

转载 作者:行者123 更新时间:2023-12-04 02:05:39 26 4
gpt4 key购买 nike

我一直在寻找有关如何使用 WiX 安装程序针对其 App.config 文件中的不同值部署应用程序的最佳实践建议。例如。

在我的本地开发机器上,我为我们的测试环境使用 App.config 设置:

<configuration>
<appSettings>
<WorkingDirectory>C:\Working</WorkingDirectory>
</appSettings>
<connectionStrings>
<add name="ApplicationEntities"
connectionString="[TestingConnectionString]"
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>

当我部署到测试环境时,这些设置是可以接受的。但是,当我们部署到生产环境时,我希望它们有所不同。例如:

<configuration>
<appSettings>
<WorkingDirectory>\\prodserver\Working</WorkingDirectory>
</appSettings>
<connectionStrings>
<add name="ApplicationEntities"
connectionString="[ProductionConnectionString]"
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>

我的问题的答案很可能与 WiX 无关。但以防万一,这是我的 WiX Product.wxs 文件的相关片段:

<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="ProductComponent" Guid="{MY-GUID}">
<File Id="Application.exe"
Name="Application.exe"
Source="..\Application.exe"
Vital="yes"
KeyPath="yes"
DiskId="1" />
<File Id="Application.exe.config"
Name="Application.exe.config"
Source="..\Application.exe.config"
Vital="yes"
KeyPath="no"
DiskId="1" />
</Component>
</ComponentGroup>
</Fragment>

此设置以在生产服务器上手动编辑 App.config 结束,这会引发手动错误。有什么更好的方法来处理这个问题以适应自动化部署?

最佳答案

我可以想到两个选项,部署 app.config 文件并使用 XmlFile 编辑它元素或维护多个 app.config 文件,每个文件代表您的目标环境,然后部署适当的文件。

这是两个选项的示例,请注意,我复制文件而不是将其放在文件系统上。这有两个目的,首先,您可以通过文件名查看已部署的文件名,其次,如果 development.app.config 和 production.app.config 放置在同一位置,您将获得 ICE30。验证错误,之后通过复制文件可以避免此错误。

另请注意,我有一个与组件关联的条件,您需要决定如何确定要部署到的环境。一些想法可能是使用机器名称、OU 或简单地将其作为属性传递到命令行。

<Component Id="development.app.config" Guid="*">

<Condition>DEVELOPMENT</Condition>
<File Name="development.app.config" KeyPath="yes">
<CopyFile Id="development.app.config" DestinationName="app.config" />
</File>

<util:XmlFile
Id="WorkingDirectory"
Action="setValue"
File="app.config"
ElementPath="/configuration/appSettings"
Name="WorkingDirectory"
Value="C:\Working"
Permanent="no" />

</Component>

<Component Id="production.app.config" Guid="*">

<Condition>PRODUCTION</Condition>
<File Name="production.app.config" KeyPath="yes">
<CopyFile Id="production.app.config" DestinationName="app.config" />
</File>

<util:XmlFile
Id="WorkingDirectory"
Action="setValue"
File="app.config"
ElementPath="/configuration/appSettings"
Name="WorkingDirectory"
Value="\\prodserver\Working"
Permanent="no" />

</Component>

关于deployment - 如何部署不同的 App.config 值(使用 WiX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com