我有一个使用IIS的项目,我想用Wix为它创建一个安装程序.我已成功为应用程序创建了.msi安装程序,我正在为它创建一个Bundle安装程序,它将安装先决条件,然后安装我的应用程序.
这是Bundle的代码:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="VilmosNagy" UpgradeCode="844c755f-f02b-4dd3-8b9c-af2498f3128c">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<PackageGroupRef Id="NetFx45Web"/>
<PackageGroupRef Id="SQLServerExpress"/>
<!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
</Chain>
</Bundle>
</Wix>
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何安装(或启用?)IIS,如果没有安装?
谢谢!
Nag*_*mos 13
根据Harbinder Singh的回答,这是我的解决方案:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="VilmosNagy" UpgradeCode="844c755f-f02b-4dd3-8b9c-af2498f3128c">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<PackageGroupRef Id="InstallIIS"/>
</Chain>
</Bundle>
<Fragment>
<PackageGroup Id="InstallIIS">
<ExePackage
Id="IIS_part0"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-WebServerRole"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-WebServerRole"
>
</ExePackage>
<ExePackage
Id="IIS_part1"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-WebServer"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-WebServer"
>
</ExePackage>
<ExePackage
Id="IIS_part2"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-CommonHttpFeatures"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-CommonHttpFeatures"
>
</ExePackage>
<ExePackage
Id="IIS_part3"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-StaticContent"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-StaticContent"
>
</ExePackage>
<ExePackage
Id="IIS_part4"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-DefaultDocument"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-DefaultDocument"
>
</ExePackage>
<ExePackage
Id="IIS_part5"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-DirectoryBrowsing"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-DirectoryBrowsing"
>
</ExePackage>
<ExePackage
Id="IIS_part6"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-HttpErrors"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-HttpErrors"
>
</ExePackage>
<ExePackage
Id="IIS_part7"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-HttpRedirect"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-HttpRedirect"
>
</ExePackage>
<ExePackage
Id="IIS_part8"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ApplicationDevelopment"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ApplicationDevelopment"
>
</ExePackage>
<ExePackage
Id="IIS_part10"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-NetFxExtensibility"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-NetFxExtensibility"
>
</ExePackage>
<ExePackage
Id="IIS_part12"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ISAPIExtensions"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ISAPIExtensions"
>
</ExePackage>
<ExePackage
Id="IIS_part11"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ASP"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ASP"
>
</ExePackage>
<ExePackage
Id="IIS_part13"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ISAPIFilter"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ISAPIFilter"
>
</ExePackage>
<ExePackage
Id="IIS_part9"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ASPNET"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ASPNET"
>
</ExePackage>
<ExePackage
Id="IIS_part14"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-HealthAndDiagnostics"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-HealthAndDiagnostics"
>
</ExePackage>
<ExePackage
Id="IIS_part15"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-HttpLogging"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-HttpLogging"
>
</ExePackage>
<ExePackage
Id="IIS_part16"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-LoggingLibraries"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-LoggingLibraries"
>
</ExePackage>
<ExePackage
Id="IIS_part17"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-RequestMonitor"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-RequestMonitor"
>
</ExePackage>
<ExePackage
Id="IIS_part18"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-HttpTracing"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-HttpTracing"
>
</ExePackage>
<ExePackage
Id="IIS_part19"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-CustomLogging"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-CustomLogging"
>
</ExePackage>
<ExePackage
Id="IIS_part20"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-Security"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-Security"
>
</ExePackage>
<ExePackage
Id="IIS_part21"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-WindowsAuthentication"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-WindowsAuthentication"
>
</ExePackage>
<ExePackage
Id="IIS_part22"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-RequestFiltering"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-RequestFiltering"
>
</ExePackage>
<ExePackage
Id="IIS_part23"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-IPSecurity"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-IPSecurity"
>
</ExePackage>
<ExePackage
Id="IIS_part24"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-Performance"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-Performance"
>
</ExePackage>
<ExePackage
Id="IIS_part25"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-HttpCompressionStatic"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-HttpCompressionStatic"
>
</ExePackage>
<ExePackage
Id="IIS_part26"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-WebServerManagementTools"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-WebServerManagementTools"
>
</ExePackage>
<ExePackage
Id="IIS_part27"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ManagementConsole"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ManagementConsole"
>
</ExePackage>
<ExePackage
Id="IIS_part28"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ManagementScriptingTools"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ManagementScriptingTools"
>
</ExePackage>
<ExePackage
Id="IIS_part29"
SourceFile="run.bat"
DisplayName="Installing IIS: IIS-ManagementService"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:IIS-ManagementService"
>
</ExePackage>
<ExePackage
Id="IIS_part30"
SourceFile="run.bat"
DisplayName="Installing IIS: WAS-WindowsActivationService"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService"
>
</ExePackage>
<ExePackage
Id="IIS_part31"
SourceFile="run.bat"
DisplayName="Installing IIS: WAS-ProcessModel"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:WAS-ProcessModel"
>
</ExePackage>
<ExePackage
Id="IIS_part32"
SourceFile="run.bat"
DisplayName="Installing IIS: WAS-NetFxEnvironment"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment"
>
</ExePackage>
<ExePackage
Id="IIS_part33"
SourceFile="run.bat"
DisplayName="Installing IIS: WAS-ConfigurationAPI"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI"
>
</ExePackage>
<ExePackage
Id="IIS_part34"
SourceFile="run.bat"
DisplayName="Installing IIS: NetFx3"
InstallCommand="dism.exe /Online /Enable-Feature /FeatureName:NetFx3"
>
</ExePackage>
</PackageGroup>
</Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)
该run.bat文件是一个简单的文本文件,包含%*.
此解决方案仅适用于Windows 7或更高版本,因为dism.exe它不是Windows 7之前的版本.
@Nagy Vilmos,您的解决方案无法在 64 位操作系统上运行。Burn 是32 位程序。即使您希望通过在 64 位操作系统上提供完整路径“C:\Windows\System32\dism.exe”来运行 64 位 dism,它也会启动 32 位“dism.exe”。这是由“文件系统重定向器”引起的。
dism 的日志会告诉您它是 32 位还是 64 位。打开文件“C:\Windows\Logs\DISM\dism.log”你会发现如下信息:
主机信息:操作系统版本=6.1.7600,运行架构= x86
或者,
主机信息:操作系统版本=6.1.7600,运行架构= amd64
当您尝试在 32 位和 64 位操作系统上运行 32 位 dism 时,您将收到此错误
错误:11 您无法使用 32 位版本的 DI SM 为正在运行的 64 位操作系统提供服务。请使用与您的计算机体系结构相对应的 DISM 版本。DISM 日志文件可以在 C:\Windows\Logs\DISM\dism.log 中找到
我的解决方案是创建另一个 WiX 安装程序项目“InstallPrecessions”并使用“QtExec64CmdLine”运行 64 位 dism。这是一个例子:
<!--1.You need to use the x64 version of quiet command line
2.[System64Folder] is also needed. If not, QtExec64CmdLine will find a 32-bit dism.exe to run.
-->
<Property Id="QtExec64CmdLine" Value='"[System64Folder]dism.exe" /Online /Apply-Unattend:[ProductTmpFolder]iis_unattend.xml'/>
<CustomAction Id="SilentLaunch" BinaryKey="WixCA" DllEntry="CAQuietExec64" Execute="immediate" Return="check" />
Run Code Online (Sandbox Code Playgroud)
我使用应答文件来包含所有功能,因此我们可以一次性启用所有功能。然后链接安装程序
<MsiPackage DisplayName="Install Prerequisites" SourceFile="$(var.InstallPrerequisites.TargetPath)" />
Run Code Online (Sandbox Code Playgroud)
更新: 通过使用“C:\windows\SysNative\dism.exe”,我现在可以避免为 x64 平台创建单独的项目。从日志中,您可以看到 32 位进程现在正在运行 64 位 DISM。
2015-10-26 16:28:07, Info DISM DISM.EXE: <----- Starting Dism.exe session ----->
2015-10-26 16:28:07, Info DISM DISM.EXE:
2015-10-26 16:28:07, Info DISM DISM.EXE: Host machine information: OS Version=6.1.7601, Running architecture=amd64, Number of processors=4
2015-10-26 16:28:07, Info DISM DISM.EXE: Executing command line: C:\windows\SysNative\dism.exe
2015-10-26 16:28:07, Info DISM DISM Provider Store: PID=2000 Getting the collection of providers from a local provider store type. - CDISMProviderStore::GetProviderCollection
....
2015-10-26 16:28:09, Info DISM DISM.EXE: Image session has been closed. Reboot required=no.
2015-10-26 16:28:09, Info DISM DISM.EXE:
2015-10-26 16:28:09, Info DISM DISM.EXE: <----- Ending Dism.exe session ----->
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7016 次 |
| 最近记录: |