Installshield / MSI установить временный файл во время процесса удаления


У меня есть проект установки, который запускает пользовательское действие. Пользовательское действие само по себе использует некоторые временные файлы, которые копируются установщиком перед вызовом пользовательского действия. Файлы удаляются после завершения пользовательского действия.

На этапе установки все работает нормально.

Моя проблема находится на этапе удаления. Вызывается другое пользовательское действие, которое также должно получить доступ к этим временным файлам. Мой вопрос Как скопировать файлы (временно) на машина во время фазы удаления?

Заранее благодарю.

2 2

2 ответа:

Установщик Windows не поддерживает временные файлы. Поэтому я предполагаю, что вы просто устанавливаете некоторые файлы и удаляете их, когда установка заканчивается. Это не очень хороший подход, потому что для установщика Windows они в основном отсутствуют ресурсы.

Правильный подход к временным файлам-хранить их в двоичной таблице и использовать пользовательские действия, которые извлекают их при запуске установки и удаляют при ее завершении. Это поддерживается непосредственно несколькими настройками авторинга инструменты.

В вашем случае вы можете попробовать такой подход:

  • не удаляйте файлы во время установки (оставьте их на диске)
  • запланируйте пользовательское действие удаления перед действием RemoveFiles в InstallExecuteSequence

Таким образом пользовательское действие удаления будет иметь доступ к вашим файлам.

Хотя все, что ответил Космин, верно, он, похоже, не знает, что InstallShield имеет функцию под названием Support Files, которая уже делает все, что он описывает. Перетащите некоторые файлы в Installation Designer / Behavior and Logic | Support Files / Language Independent, и InstallShield автоматически перенесет их в таблицу ISSetupFile и выполнит ряд пользовательских действий, которые извлекут файлы во временную директорию во время установки и очистят файлы в конец.

Расположение этих файлов можно найти с помощью свойства [SUPPORTDIR]. Если вы используете отложенное пользовательское действие, то вам придется сериализовать его с помощью свойства CustomActionData.

Кроме того, если вы используете настраиваемые действия DTF, вы должны знать, что если вы добавляете содержимое в свой CA CSPROJ с действием Content и Copy Always, то оно будет упаковано и извлечено в текущий каталог, к которому будет осуществляться доступ во время выполнения кода.