Как создать Wix Exepackage, который имеет только ссылку для загрузки
Я пытаюсь создать 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 AUTHORITYNETWORK SERVICE" /SQLSVCSTARTUPTYPE=Auto /SQLSYSADMINACCOUNTS=BUILTINAdministrators /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 'SourceDirSQLEXPRWT_x64_ENU.exe'.
Я могу установить свойство SourceFile в локальный файл и включить его в мою установку, но я бы предпочел не перемещать файл 800mb+ с моим установщиком.
2 ответов
если вы настроили свой пакет на Compressed=no
он не будет включать исходный файл в ваш окончательный комплект. Причина, по которой вы получаете "файл не найден", заключается в том, что при построении установщика требуется локальная версия EXE-файла пакета для получения информации из него. Если вы хотите создать проект, который имеет только URL-адрес загрузки, вам нужно указать RemotePayload
element и предоставьте дополнительную информацию об удаленном пакете.
это позволит вам создайте пакет установки без необходимости иметь исходный файл на компьютере, но вы должны быть уверены, что ваша полезная нагрузка точно описана или ваша установка завершится неудачей.
на ExePackage
элемент, убедитесь, что вы включить , который является одним из обязательных атрибутов рядом с 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 ссылка для получения дополнительной информации.
ответ RyanJ велик. Это сбило меня с толку после того, как я не смог найти правильную магическую комбинацию самостоятельно. Но мне все равно потребовалось несколько проб и ошибок, чтобы создать файл wxs пакета, который действительно работал. Итак, для записи, если вы создадите новый проект пакета в Visual Studio, а затем замените пакет.wxs содержимое:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle
Name="BundleExperiment"
Version="1.0.0.0"
Manufacturer="Windows User"
UpgradeCode="UNIQUE-GUID-GOES-HERE-YADADADA"
Compressed="no">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<ExePackage Id="DymoLabelSoftware"
SourceFile="DLS8Setup.8.5.1.exe"
DownloadUrl="http://download.dymo.com/dymo/Software/Win/DLS8Setup.8.5.1.exe" />
</Chain>
</Bundle>
вы можете увидеть, как это работает, а затем изменить его для работы с любым пакетом exe, который вы пытаетесь связать.*
Это мне было очень нелогично, что вам нужно указать значения для SourceFile и DownloadUrl и все еще иметь копию загруженного файла в каталоге проекта. На самом деле, это было более чем нелогично. Я был уверен, что не имея загруженного файла в моем каталоге проекта, я сказал Burn опустить файл из пакета. Но вот как я теперь это понимаю:--2-->
- 'Compressed=" no "' -- говорит Burn не вставлять exe в комплекте установщик это здание
- 'SourceFile=" DLS8Setup.8.5.1.exe "' -- рассказывает Записать, чтобы выйти в каталог проекта и использовать загруженный, локальный копия целевого пакета для создания все данные в противном случае придется выяснить и поставить в RemotePayload запись
- 'DownloadUrl=...- ... это та часть, которая с самого начала казалась мне очевидной!--11-->
*" С любым exe, который вы пытаетесь связать " отказ от ответственности: я изначально пытался, очень сложно, использовать Git Пакет установщика Windows для данного примера. И, используя точно такой же синтаксис (и правильные имена и пути, действительно!), связанная установка всегда завершалась ошибкой доступа и сообщением типа "не удалось получить полезную нагрузку" в файле журнала. Единственное, что странно в загрузке Git, которую я заметил, было то, что она не исходила из URL, который я использовал, но перенаправляла загрузку откуда-то из облака Amazon S3. Я предполагаю, что Burn / Wix / установщик Windows может возражаю против этой ловкости рук-и вроде бы разумно. Следовательно, в зависимости от того, какой установщик вы хотите связать, вам может потребоваться дать ему фиксированный URL под вашим собственным контролем, чтобы он работал с этой функцией.