iexpress не поддерживает структуру папок при расширении до temp
Среда: Windows 7 64, Visual Studio 2013
До запуска iexpress у меня есть установочный файл, который ссылается на основную MSI и обязательную MSI (SlimDX). Когда установщик Visual Studio добавляет необходимое условие, он добавляет необходимые предварительные условия в подпапку рядом с файлом setup.exe.
Теперь я использую iexpress.exe для объединения файлов setup.exe и 2 msi. Когда iexpress извлекает 3 файла во временную папку, распространяемый файл не находится в подпапке, несмотря на то, что файл установки все еще ожидает его в подпапке.
Как заставить iexpress сохранять структуру папок при распаковке? Кроме того, как добавить обязательное условие в установщик Visual Studio, как я могу заставить его размещать зависимости на том же уровне папки, что и setup.exe?
Файл SDE
[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=0
HideExtractAnimation=0
UseLongFileName=1
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=I
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
[Strings]
InstallPrompt=
DisplayLicense=
FinishMessage=
TargetName=C:\Jobs\NME\Installer\Release\NMEInstaller.EXE
FriendlyName=NME Installer
AppLaunched=setup.exe
PostInstallCmd=<None>
AdminQuietInstCmd=
UserQuietInstCmd=
FILE0="NME Installer.msi"
FILE1="setup.exe"
FILE2="SlimDXRedistributable\SlimDX Runtime .NET 4.0 x64 (January 2012).msi"
[SourceFiles]
SourceFiles0=C:\Jobs\NME\Installer\Release\
SourceFiles1=C:\Jobs\NME\Installer\Release\SlimDXRedistributable\
[SourceFiles0]
%FILE0%=
%FILE1%=
[SourceFiles1]
%FILE2%=
2 ответа
Насколько я понимаю, MSFT больше не рекомендует и не поддерживает использование IEXpress.exe, поскольку оно содержит ряд уязвимостей, которые никогда не были исправлены. Вы действительно должны рассмотреть возможность перехода к правильному загрузчику, такому как функция записи установщика Windows XML. Это проще в реализации и гораздо мощнее.
Я ответил на вопрос, подобный этому прежде:
По сути, вы хотите использовать пакетный файл (или что-то еще), чтобы скопировать или переместить файлы туда, где они вам нужны, перед выполнением фактического setup.exe
, что-то вроде:
@echo off
mkdir SlimDXRedistributable
move /y "SlimDX Runtime .NET 4.0 x64 (January 2012).msi" SlimDXRedistributable
setup.exe
Помните, что если вы используете командный файл для его вызова следующим образом:
cmd /c myscript.bat
(Если вы просто поставите командный файл, он будет работать через старый command.com
, что является неоптимальным.)