Visual studio 2010 当为WIX安装程序自动获取文件时,我的目录结构有多灵活?

Visual studio 2010 当为WIX安装程序自动获取文件时,我的目录结构有多灵活?,visual-studio-2010,wix,Visual Studio 2010,Wix,请原谅我的无知——我一直在读一些书,但还没有准备好尝试任何东西 目前,我们有一个.wxs文件,无法轻松维护。无论何时从SVN提交/删除新文件,都会手动添加/删除所有文件。由于在创建一个新文件和更新.wxs安装文件之间不断出现问题,我们经常会破坏安装版本 因此,我希望自动获取解决方案中的文件。似乎概述了我想做什么,但它没有解决我的主要关切之一。也就是说,像这样获取文件是否允许定制目录结构,或者安装程序现在是否会在模拟我们的解决方案的位置安装文件 我正在努力实现从“自动检测新文件和文件夹”到“知道自

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

目前,我们有一个.wxs文件,无法轻松维护。无论何时从SVN提交/删除新文件,都会手动添加/删除所有文件。由于在创建一个新文件和更新.wxs安装文件之间不断出现问题,我们经常会破坏安装版本

因此,我希望自动获取解决方案中的文件。似乎概述了我想做什么,但它没有解决我的主要关切之一。也就是说,像这样获取文件是否允许定制目录结构,或者安装程序现在是否会在模拟我们的解决方案的位置安装文件

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


谢谢。

我正在ASP.net probject上使用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块中的DirectoryRefId和第二个xml块中的目录Id是相同的,则这两部分之间的链接

因此,基本上,直接在我的目录下的解决方案结构是复制的,但是我可以更改根目录

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

  • \人
  • \帐目\
  • \剧本\
这些子目录将包括在内

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

  • c:\test\people\
  • c:\test\accounts\
  • c:\test\scripts\

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

+1用于显示HeatDirectory任务。到目前为止,我读到的所有其他问题都只谈到将heat.exe作为预构建任务运行。