Удалить user.config при удалении через опцию командной строки msiexec / x - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть установочный пакет MSI, который устанавливает приложение .net. Он также устанавливает файл Uninstall.bat , который выполняет удаление с помощью параметра msiexec / x . Но он не удаляет файл user.config , созданный в пользователях Локальные настройки \ Папка данных приложения \ Название компании \ Папка продукта.

Я не уверен, как мне это сделать, так как я не могу найти никакой опции в самом Установщике.

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

Пожалуйста, предложите.

1 Ответ

0 голосов
/ 04 апреля 2012

Я получил его на работу.Я создал новый консольный проект « 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();
        }

Теперь я добавляю основной выход этого проекта в установщик.И наконец, я добавляю пользовательское действие в Uninstall в качестве основного вывода из проекта UninstallHelper .

Это помогло мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...