WIX Web 设置






2.05/5 (8投票s)
2007 年 5 月 4 日
4分钟阅读

74639

891
使用 VS2005 和 Wix 3.0 创建 WIX Web 安装程序
引言
使用 WIX 3.0 在 Visual Studio 2005 中创建 Web 安装程序。该程序还可以自动生成 wix 文件。该安装程序具有以下功能:
- 根据环境进行安装
- 创建事件源
- 创建虚拟目录
- 选择网站、应用程序池
- 编辑配置文件
背景
根据我们项目中的一项要求,我必须实现 WIX 安装程序项目。我对部署完全是新手,努力让项目启动并运行。嗯,我应该感谢这里的教程:http://www.tramontana.co.hu/wix/ 。在本文中,我创建了一种解决方案模板,可用于在 Visual Studio 2005 中创建 Web 安装程序。它使用 .NET 2.0、Wix 3(以及用于 VS2005 集成的 votive)构建。
使用代码
* 它有什么作用?嗯,创建带有基本自定义操作的 Web 安装程序...
* 它有什么?
它具有以下功能:
* 从 wix 脚本创建 Web 安装程序。
* ComponentWriter,写入要添加到安装程序的文件列表,升级版本号。
* Web Deployment 项目预编译 Web 项目。
* CustomInstaller 帮助创建事件源、虚拟目录、编辑配置文件(您也可以在 WDP 中完成)。
* 如何使用?
在 Web Deployment 项目中,(右键单击“打开项目文件...”)只需添加以下代码:
<!-- My customization -->
  <UsingTask AssemblyFile="..\SolutionItems\Djans.ComponentWriter.exe" TaskName="ComponentWriterTask" />
  
  <PropertyGroup>
    <SourceDirectory>$(OutputPath)</SourceDirectory>
  </PropertyGroup>
  
  <ItemGroup>
    <CustomInstallerFiles 
     Include="..\SolutionItems\Djans.CustomInstaller.dll;..\SolutionItems\Djans.CustomInstaller.dll.config"    
    />
    <EnvironmentFiles Include="..\SolutionItems\*.xml" />
  </ItemGroup>
  <ItemGroup>
    <FilesToBeDeleted Include="$(SourceDirectory)\bin\*.pdb;$(SourceDirectory)\*.csproj*" />
  </ItemGroup>
  <Target Name="AfterBuild">
    <Message Text="**************** After Build **********************" />
    <CallTarget Targets="DeleteUnwantedFiles" />
    <CallTarget Targets="CopyInstallerFiles" />
    <CallTarget Targets="CopyEnvironmentFiles" />
    <CallTarget Targets="WriteWix" />
  </Target>
  <Target Name="DeleteUnwantedFiles">
    <Message Text="Deleting unwanted Files ..." />
    <Delete  Files="@(FilesToBeDeleted)" TreatErrorsAsWarnings="true" />
    <RemoveDir Directories="$(SourceDirectory)\obj" />
  </Target>
  <Target Name="CopyInstallerFiles">
    <Message Text="Copying Installer Files ..." />
    <Copy SourceFiles="@(CustomInstallerFiles)" 
          DestinationFiles="@(CustomInstallerFiles->'$(SourceDirectory)\bin\%(Filename)%(Extension)')" />
  </Target>
  <Target Name="CopyEnvironmentFiles">
    <Message Text="Copying Environment Files ..." />
    <Copy SourceFiles="@(EnvironmentFiles)" 
          DestinationFiles="@(EnvironmentFiles->'$(SourceDirectory)\bin\%(Filename)%(Extension)')" />
  </Target>
  <Target Name="WriteWix">
    <Message Text="Writing wix files ..." />
    <ComponentWriterTask 
         SourceDirectory="$(SourceDirectory)" 
         OutputFile="..\WixSetup\Components.wxs" 
         UpgradeFile="..\WixSetup\WixSetup.wxs" 
    /> 
  </Target>
<!-- done --> 从 target="WriteWix",调用 componentwriter 任务。它接受三个参数:源目录的位置、列出要部署的所有文件的 wix 文件以及包含 Product 元素的主 wix 文件。
ComponentWriter 列出发布目录中的所有文件,并写入 wix 组件文件。接下来,它更新 Wix 安装程序文件(主文件)中的版本代码。ComponenWriter 可以单独从命令行调用,也可以用作 msbuild 脚本中的任务。当前的 WIX 版本不会自动列出部署所需的文件。因此,我编写了一个简单的 C# 程序来完成这项工作,它将在 WIX 安装程序项目编译之前启动。在 msbuild 脚本中,样本中这是 Web Deployment 项目的一部分,它被写为:
<Target Name="WriteWix">
    <Message Text="Writing wix files ..." />
    <ComponentWriterTask 
         SourceDirectory="$(SourceDirectory)" 
         OutputFile="..\WixSetup\Components.wxs" 
         UpgradeFile="..\WixSetup\WixSetup.wxs" 
    /> 
  </Target>ComponentWriter 任务接受三个参数:
- SourceDirectory: 存储源文件的目录的完整物理路径。源文件是用于部署的文件。
- OutputFile: 列出目录结构、要部署的文件和 feature 元素的文件。在样本中,它命名为“Component.wxs”。
- UpgradeFile: 这是调用 UserInterface.wxs、Actions.wxs、Component.wxs 等其他 wix 文件的主要文件。它还包含 Product、Upgrade 元素。在样本中,它是 WixSetup.wxs。
- 注意:[UgradeFile] 仅更新前 3 部分,在 4 部分版本控制中,第 4 部分始终为 0。如果您不想使用升级,请提供“-skip”。
 
WixSetup 项目中的文件
- Component.wxs:此文件列出了所有要部署的文件。
 
- WixSetup.wxs:这是主文件,包含产品元素、版本详细信息。
 
- Actions.wxs:自定义操作在此文件中定义。
 
- UserInterface.wxs:这定义了安装程序的 UI 组件。
 
- Properties.wxs:此文件保存安装程序的所有属性定义。
从命令行使用 ComponentWriter
开关: '?', '/?', '-?', 'help' 显示此帮助。
'-skip' 跳过升级代码的更新。
用法
 ComponentWriter.exe [SourceDirectory] [OutputFile] [UgradeFile]
[SourceDirectory]:(必需)存储源文件的目录的完整物理路径。
源文件是用于部署的文件。
[OutputFile]:(必需)列出目录结构、要部署的文件和 feature 元素的文件。
[UgradeFile]:(可选)包含 upgrade 元素的文件。
要跳过使用升级,请将 '-skip' 作为参数而不是文件名提供。
示例
编写组件文件并升级版本
    Djans.ComponentWriter.exe c:\Project\Source c:\Project\WixSetup\Component.wxs c:\Project\WixSetup\WixMain.wxs编写组件文件而不升级版本    Djans.ComponentWriter.exe c:\Project\Source c:\Project\WixSetup\Component.wxs -skip注意: [UgradeFile] 仅更新前 3 部分,在 4 部分版本控制中,第 4 部分始终为 0。
关注点
- 在 Visual Studio 2005 中自动化 wix 安装程序
历史
--.
