Удалить user.config при удалении через опцию командной строки msiexec /x
У меня есть установочный пакет MSI, который устанавливает приложение.net. Он также устанавливает файл Uninstall.bat, который выполняет удаление через опцию msiexec/x. Но он не удаляет файл user.config, созданный в папке "Локальные настройки" пользователя \Application Data \Company Name\Product.
Я не уверен в том, как мне это сделать, так как я не могу найти какой-либо вариант в самом установщике.
Я могу создать еще один командный файл, который может выполнить эту работу, но не уверен, что это будет правильным способом. Кроме того, если я попытаюсь сделать это с помощью пакетного файла, как я узнаю, что текущий пользователь обращается к нужной папке? Я не хочу делать это слишком сложным. Есть ли простой способ сделать это.
Пожалуйста, предложите.
1 ответ
Я получил это на работу. Я создал новый консольный проектUninstallHelper в решении. Добавлен InstallerClass в проект UninstallHelper. Я переопределяю метод OnBeforeUninstall:
protected override void OnBeforeUninstall(IDictionary savedState)
{
base.OnBeforeUninstall(savedState);
try
{
List<string> appFolders = new List<string>();
string userFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string userDataFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
userFolderPath = userFolderPath + @"\CompanyName";
userDataFolderPath = userDataFolderPath + @"\CompanyName";
appFolders.Add(userFolderPath);
appFolders.Add(userDataFolderPath);
foreach (string folderPath in appFolders)
{
List<string> umDirs = new List<string>();
DirectoryInfo targetDir = new DirectoryInfo(folderPath);
foreach (DirectoryInfo dir in targetDir.GetDirectories())
{
if (dir.Name.StartsWith("ProductName"))
umDirs.Add(dir.FullName);
}
foreach (string dirName in umDirs)
{
DirectoryInfo subDir = new DirectoryInfo(dirName);
foreach (FileInfo file in subDir.GetFiles())
{
if (file.Exists)
file.Delete();
}
foreach (DirectoryInfo dir in subDir.GetDirectories())
{
if (dir.Exists)
dir.Delete(true);
}
subDir.Delete();
}
}
}
catch(Exception ex)
{
//Console.WriteLine(ex.Message);
//Console.ReadKey();
}
Теперь я добавляю Primary OutPut этого проекта в установщик. И наконец, я добавляю пользовательское действие в Uninstall в качестве основного вывода проекта UninstallHelper.
Это помогло мне.