我想在我的捆绑软件中创建一个[使用DownloadUrl属性]的ExePackage,该软件包下载Sql Express 2014并使用以下代码进行安装
<ExePackage Id="Sql2014Express"
DisplayName="SQL Server 2014 Express"
Cache="no"
Compressed="no"
PerMachine="yes"
Permanent="no"
Vital="yes"
Name="SQLEXPRWT_x64_ENU.exe"
DownloadUrl="http://download.microsoft.com/download/E/A/E/EAE6F7FC-767A-4038-A954-49B8B05D04EB/ExpressAndTools%2064BIT/SQLEXPRWT_x64_ENU.exe"
InstallCommand="/ACTION=Install /INSTANCENAME=$(var.InstanceName) /FEATURES=SQL /SECURITYMODE=SQL [SqlVariable] /TCPENABLED=1 /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /SQLSVCSTARTUPTYPE=Auto /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /ADDCURRENTUSERASSQLADMIN=FALSE /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms"
UninstallCommand="/Action=Uninstall /INSTANCENAME=$(var.InstanceName) /FEATURES=SQL /Q /HIDECONSOLE"
DetectCondition="SqlInstanceFound"
InstallCondition="$(var.ServerInstall)">
<ExitCode Value ="3010" Behavior="forceReboot" />
</ExePackage>
当我尝试构建安装程序包时,出现以下错误...。
Error 2 The system cannot find the file 'SourceDir\SQLEXPRWT_x64_ENU.exe'.
我可以将SourceFile属性设置为本地文件,并在安装中包含该文件,但我希望不必在安装程序中移动800mb +文件。
最佳答案
如果将捆绑软件设置为Compressed=no
,则最终捆绑软件中将不包含源文件。您得到“找不到文件”的原因是因为在构建安装程序时,它需要软件包EXE文件的本地版本才能从中获取信息。如果要构建仅具有下载URL的项目,则需要指定RemotePayload
元素,并提供有关远程软件包的更多定义信息。
这将允许您构建安装程序包,而不必在计算机上安装源文件,但是您需要确保正确描述了有效负载,否则安装将失败。
确保在ExePackage
元素上包括Name
属性,该属性是SourceFile
旁边的必需属性之一,但是SourceFile
不允许RemotePayload
。您的示例包括它,因此您应该可以。
将<RemotePayload>
元素作为ExePackage
的子元素包含进来,如下所示:
<RemotePayload Description="MyRemoteApp" ProductName="MyProductName" Size="size-in-bytes" Version="1.1.1.1" Hash="SHA-1-checksum-here"/>
其中所需的所有信息都是您特定软件包的属性。
如果不是这样,则需要确保在构建时源文件在本地可用,但请确保未压缩该文件,以便用户安装并从URL下载有效负载。
有关更多信息,请参见RemotePayload引用。