我正在尝试在我的包中创建一个 ExePackage [使用 DownloadUrl 属性],用于下载 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 以上的文件。
最佳答案
如果您将 bundle 设置为 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引用以获取更多信息。
关于wix - 如何创建只有下载链接的 Wix Exepackage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26850462/