gpt4 book ai didi

visual-studio-2010 - 在为 WIX 安装程序自动收集文件时,我的目录结构有多灵活?

转载 作者:行者123 更新时间:2023-12-01 12:57:56 25 4
gpt4 key购买 nike

请原谅我的无知——我一直在阅读一些资料,但还没有准备好尝试任何东西。

目前,我们有一个不容易维护的.wxs 文件。每当从 SVN 中提交/删除新文件时,都会手动添加/删除所有文件。由于在创建新文件和更新 .wxs 安装文件之间丢球,我们不断地破坏安装构建。

因此,我想自动收集解决方案中的文件。 HOW TO CONSUME MSDEPLOY STAGED WEB SITE OUTPUT IN A WIX INSTALLER似乎概述了我想做的事情,但它没有解决我的主要问题之一。也就是说——像这样收集文件是否允许自定义目录结构,或者安装程序现在会在模仿我们的解决方案的位置安装文件吗?

我正在努力实现从“自动检测新文件和文件夹”到“知道自动将新文件放在哪里”的逻辑飞跃。有没有办法设置一些预定义的操作,比如“此父文件夹下的所有文件和文件夹都应安装到 [其他定义的目录]”

谢谢。

最佳答案

我在 ASP.net 项目上使用 WiX 动态包含在安装过程中运行的所有网站文件和数据库脚本。

我使用像这样的热任务从解决方案中提取文件

  <HeatDirectory
ToolPath="$(WixToolPath)"
Directory="$(WebRoot)"
GenerateGuidsNow="yes"
ComponentGroupName="MasterPlanWeb"
OutputFile="$(MSBuildProjectDirectory)\Setup\Product\Fragments\wwwfiles.wxs"
SuppressFragments="yes"
DirectoryRefId="WEBROOT"
KeepEmptyDirectories="yes"
PreprocessorVariable="var.WebRoot"
SuppressRegistry="yes"
SuppressRootDirectory="yes"
SuppressCom="yes" />

然后在我的主要 wix 脚本中,这些被引用为

  <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLLOCATION" Name="MasterPlan">
<Directory Id="WEBROOT" Name="wwwroot" />
<Directory Id="DATABASESRC" Name="databasesrc" />
</Directory>
</Directory>

这两个部分之间的链接,如果第一个 xml block 中的 DirectoryRefId 和第二个中的目录 ID。

所以基本上直接在我的 HEATed 目录下的解决方案结构是按原样复制的,但是我可以更改根目录。

例如,如果我在 c:\mywebsite 上运行 HEAT 并且该目录包含

  • \人\
  • \账户\
  • \脚本\

将包含这些子目录。

第二部分允许我在安装过程中设置根目录,因此如果用户选择 c:\test 作为要安装的目录,将创建以下目录(及其热内容)

  • c:\测试\人\
  • c:\test\accounts\
  • c:\test\scripts\

如果您真的希望子目录将所有数据都放在根目录下,例如您可以对每个文件夹进行循环并运行相同的命令,为它们指定相同的 DirectoryRefId。

关于visual-studio-2010 - 在为 WIX 安装程序自动收集文件时,我的目录结构有多灵活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595359/

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