C# 需要时,通过安装中的复杂文件列表,从web自动安装.net Framework 4.0
我已经完成了一个安装项目,其中包含几个文件、DLL、一个Windows窗体应用程序和一个Windows服务。一切都是用C#(.net)编写的 我使用WiX配置msi安装,现在文件如下:C# 需要时,通过安装中的复杂文件列表,从web自动安装.net Framework 4.0,c#,.net,wix,wix3.6,wix3.7,C#,.net,Wix,Wix3.6,Wix3.7,我已经完成了一个安装项目,其中包含几个文件、DLL、一个Windows窗体应用程序和一个Windows服务。一切都是用C#(.net)编写的 我使用WiX配置msi安装,现在文件如下: <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" Name="App Name" Language="1033" Version="1.0.0" Manufacturer="C
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="App Name" Language="1033" Version="1.0.0"
Manufacturer="Company Name" UpgradeCode="GUID-HERE">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<Icon Id="InstallIcon" SourceFile="msiicon.ico" />
<Property Id="ARPPRODUCTICON" Value="InstallIcon" />
<Media Id="1" Cabinet="SingleCab.cab" EmbedCab="yes" />
<Feature Id="ProductFeature" Title="Title" Level="1">
<!-- Some features here-->
</Feature>
<UI><!-- Many UI here--></UI>
</Product>
<!-- Some fragments tag here -->
</Wix>
但是我需要插入.NETFramework4.0的检查。如果未安装.net Framework 4.0,请自动运行web安装
因此,我搜索并找到了许多类似的例子来说明如何做到这一点。我发现的几乎所有示例都涉及标记包、链和MSI包
我的问题是如何将我所拥有的与我所发现的例子相结合
请参见,在所有示例(获取下一行)中,合并项目发生在这一行:
<MsiPackage
SourceFile="$(var.SetupProject1.TargetPath)">
</MsiPackage>
但我没有VisualStudio项目,我在产品标签中有很多文件。产品标签在
内部或
内部不起作用,所以我知道什么?如何将我所有的
内容放在这里面。首先,让我们建立一些基本知识
WiX项目是visualstudio项目。VisualStudio项目是项目。MSBuild项目是XML文件。通常,MSBuild项目会将其他MSBuild项目作为库导入(扩展名为.targets),因为生成项目所需的大多数信息对于相同类型的所有项目(例如.csproj)都是通用的。MSBuild项目可以使用.NET Framework附带的MSBuild.exe生成。MSBuild项目最终执行任务以生成项目。这些任务通常是对命令行工具的调用,或者,如果可用,是对库的等效函数调用
要使用WiX源文件,将调用WiX的candle.exe和light.exe。要生成一些WiX源文件,可以调用WiX的heat.exe
WiX提供了MSBuild任务来为您完成此任务。它还提供导入这些任务的MSBuild项目模板。通常使用IDE(如或)将项目模板转换为项目。但是您可以手工编写一个项目文件,引用。同样,这样的项目可以通过调用msbuild.exe来构建,或者IDE可以为您调用msbuild
使用IDE可以方便地编辑WiX源文件和项目。可以使用IDE的项目设计器或XML编辑器编辑项目文件。(在VS的解决方案资源管理器中,先卸载项目,然后编辑项目。)因为源文件和项目都是XML,IDE应该根据文件的XML模式提供帮助
许多类型的项目(例如.csproj和.wixproj)允许项目引用其他项目。项目引用的目的和功能取决于项目的MSBuild导入。您可能熟悉C#项目中的C#项目参考。至少,人们会期望在引用项目之前构建引用项目
WiX项目可以引用.NET项目(例如.csproj)或其他WiX项目。对于每个项目引用,WiX根据引用项目的名称定义一些。例如:如果您有一个WiX引导程序项目,它可以引用名为SetupProject1
的WiX安装程序项目,因此var.SetupProject1.TargetPath
将被定义为在引导程序源代码中使用。另一个例子:如果您有一个WiX安装项目,它可以引用一个名为ConsoleApplication1
的C#项目,因此将定义var.ConsoleApplication1.TargetPath
。在这两个示例中,目标路径很可能根据项目配置(例如调试、发布)而变化。WiX根据配置将变量指向引用项目中定义的适当路径
底线
你应该考虑一个WiX安装项目,它引用了你的C项目和一个引用你的WIX安装项目的WIX引导程序项目。构建解决方案,您就完成了
(当然,在开发过程中,您可能不希望在解决方案中安装项目。在这种情况下,请使用多个解决方案文件。)如果您希望同时安装.NET和.MSI软件包,从最终用户的角度来看,您可以使用Burn创建“捆绑包”:但问题是,在本例中或在文档链接中,始终使用对Visual Studio项目的引用,如
$(var.SetupProject1.TargetPath)
。我使用WiX处理已经编译的文件,而不是项目。