3
  1. Я создал настройку с использованием проекта установки в VS 2010. Он устанавливает мое приложение в папку с файлами программ, позволяет говорить XXX. Мое приложение далее создает некоторые файлы и папку в папку XXX. Во время удаления удаляйте все, что угодно, создавайте по настройке, пока файлы и папка, созданные моим приложением, остаются там в XXX.Как удалить папку приложения при удалении

  2. Я написал какой-то пользовательский код для удаления папки (XXX) с помощью installerclass, но не выполняется, когда пользователь удаляется с панели управления при успешном выполнении при удалении из созданной мной установки.

+3

@Davide Я знаю, что это не отвечает ваш вопрос, но вы должны избегать писать что-либо в папке установки приложения - пользователь без соответствующих разрешений может привести к сбою вашего приложения. (OTOH, я признаю, что ваша проблема удаления останется, даже если вы напишете AddData или тому подобное ...) –

+0

Спасибо Davide за совет, я буду помнить об этом. – Vipul

ответ

1

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

Играйте с конфигурацией и свойствами папок, файлов и самого проекта установки, и вы получите то, что вам нужно, без кода, который нужно записать.

+0

Можете ли вы, пожалуйста, помочь мне получить подробное решение по вышеуказанному вопросу? В моем случае также мое приложение создает несколько файлов во время выполнения, что вызывает процесс удаления MSI с панели управления, чтобы не удалять папки, содержащие файлы. Мое требование заключается в удалении MSI, все папки, присутствующие в папке wwwroot, должны быть удалены, а папка wwwroot должна быть чистой. Не могли бы вы помочь мне в этом вопросе? –

+0

Я использовал сценарий powershell для удаления msi и в этом коде теперь я вызываю следующую powershell, которая помогает мне удалить все папки в папке: Remove-Item «C: \ Temp \ Fldr \ *» -Force -Recurse - ErrorAction SilentlyContinue, и она решила проблему. –

2

Первым шагом было бы изменить ваше приложение, чтобы оно записывало свои данные в местах для каждого пользователя вместо папки приложения. Например, вы можете использовать пользовательскую папку в каталоге текущего пользователя AppData. Таким образом, вы избегаете проблем, связанных с разрешением.

Для удаления этой папки вы действительно можете использовать настраиваемое действие. Если он добавлен в Uninstall в вашем проекте установки, он должен запускаться как для панели управления, так и для пакетов uninstalls.

Попробуйте создать и найдите свое собственное имя действия, чтобы узнать, что произойдет.

1

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

Ваше обязательное действие должно быть запланировано в таблице InstallExecute.
(Для совместимости с UAC, он должен быть отложено с noimpersonate. Тем не менее, само по себе приложение не совместимо с UAC, так что это на самом деле не имеет значения.)

Смежные вопросы