Я создаю MSI-пакет для приложения, в котором есть предпосылки для установки.
Я использую загрузчик Visual Studio 2005 для этой задачи.
Для этого я сделал следующее:
Расположил папку C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ и создал папку для моей предпосылки (сделал ее такой же структурой, как 'dotnetfx'); создал «product.xml» и «package.xml» и разместил их соответствующим образом. До сих пор я держал файлы xml очень простыми, чтобы проверить установку:
product.xml
<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="MyPrereq" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="MyPrereq.exe" />
</PackageFiles>
<InstallChecks>
</InstallChecks>
<Commands Reboot="None">
<Command PackageFile="MyPrereq.exe" EstimatedInstallSeconds="90">
<InstallConditions>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<DefaultExitCode Result="Fail" String="GeneralFailure" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>
</Product>
package.xml
<?xml version="1.0" encoding="utf-8"?>
<Package Name="MyPrereq" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<Strings>
<String Name="Culture">en</String>
<String Name="DisplayName">MyPrereq</String>
<String Name="GeneralFailure">A fatal error occurred. The installation failed.</String>
</Strings>
</Package>
Теперь я могу добавить необходимое условие из списка и построить свой проект установки.
Проблема:
Выводом для сборки является «setup.exe», пакет «MyApp.msi», плюс подпапка «MyPrereq», которая содержит «MyPrereq.exe».
Я бы хотел, чтобы сборка создала 'setup.exe' и один 'MyApp.msi', который содержал бы внутри 'MyPrereq', без дополнительных файлов / каталогов.
Я знаю, что .NET Framework является еще одной предпосылкой для моего приложения, и он включен в тот же .msi, так что это должно быть как-то возможно.
Как мне этого добиться?