InstallShield 2011 Standalone Builder не содержит необходимых компонентов для установки .NET 3.5 - PullRequest
2 голосов
/ 10 августа 2011

Автономный компоновщик InstallShield 2011 года не включает в себя обязательные компоненты Setup, необходимые для .NET 3.5; при сборке с полной установкой он успешно завершается, но при сборке с SAB выдает следующий набор ошибок:

ISDEV: ошибка -1007: не удается скопировать исходный файл 'c: \ Program Files \ InstallShield \ 2011 SAB \ SetupPrerequisites \ Microsoft .net \ 3.5 \ Full \ dotnetfx35.exe' в целевой каталог [путь] \ Release \ DiskImages \ DISK1 \ ISSetupPrerequisites {2B692A0F-7172-44B2-B0CB-9991078AFD31} \ dotnetfx35.exe '

ISDEV: ошибка -5054: не удалось определить размер файла "[путь] \ Release \ DiskImages \ DISK1 \ ISSetupPrerequisites {2B692A0F-7172-44B2-B0CB-9991078AFD31} \ dotnetfx35.exe"

ISDEV: ошибка -1007: невозможно скопировать исходный файл 'c: \ Program Files \ InstallShield \ 2011 SAB \ SetupPrerequisites \ Microsoft .net \ 3.5 \ Full \ Helper.exe' в целевое хранилище '[путь] \ Release \ DiskImages \ DISK1 \ ISSetupPrerequisites {2B692A0F-7172-44B2-B0CB-9991078AFD31} \ Helper.exe '

ISDEV: ошибка -5054: не удалось определить размер файла "[путь] \ Release \ DiskImages \ DISK1 \ ISSetupPrerequisites {2B692A0F-7172-44B2-B0CB-9991078AFD31} \ Helper.exe"

Несколько странно, что, не имея возможности скопировать (из SRC в DEST), он все еще пытается определить размер файла DEST!

Но в любом случае основная причина заключается в том, что папка "Microsoft .net" в папке SetupPrerequisites в каталоге установки (c: \ Program Files \ InstallShield \ 2011 SAB) отсутствует. Он должен иметь папку «3.5», в которой должна быть папка «Full», которая должна содержать два файла: dotnetfx35.exe и Helper.exe.

Мы исправили это в наших установках SAB, скопировав эти файлы из полной установки в установку SAB.

На самом деле, у нас уже была папка InstallShield с ISM, поэтому мы просто создали там папку SetupPrerequisites, поместили ту же структуру, что должна была быть установлена, а затем добавили логику в сборку так, чтобы, если она увидит это папку, он скопирует все содержимое в папку установки SAB для успешной сборки.

Я отвечаю на свой вопрос в предыдущем абзаце; Я хотел показать это всем, кто может столкнуться с этой проблемой.

1 Ответ

2 голосов
/ 11 августа 2011

Ваши наблюдения верны, и мне не нравится, как InstallShield работает (по умолчанию), поскольку он поощряет волшебный (сборочный) антипаттерн машины .

Вместо этого я предпочитаю редактировать файлы PRQ и ссылки ISM на PRQ (таблица ISSetupPrerequisites, столбец ISBuildSourcePath) и заставлять все использовать относительные пути на основе переменной пути ISPROJECTDIR . Я проверяю, затем проверяю все файлы PRQ и перенаправляю файлы в систему управления исходным кодом, чтобы при сборке дерева можно было найти все. Этот шаблон можно сделать более сложным, если вы повторно используете перенаправления в нескольких сборках, но концепция та же.

...