Cómo eliminar la carpeta en la desinstalación de aplicaciones en C # .NET?

StackOverflow https://stackoverflow.com/questions/1117866

  •  12-09-2019
  •  | 
  •  

Pregunta

Tengo una aplicación .NET ventana llamado "XYZ", he creado una carpeta personalizada denominada "ABC" (carpeta puede estar en cualquier lugar que no sea ruta de la aplicación) durante el uso de mi solicitud después de la instalación.

Cuando estoy de desinstalar la aplicación de todas las carpetas se eliminan, sino carpeta "ABC" permanecen allí.

¿Cómo puedo eliminar la carpeta 'ABC', que reside aparte de ruta de la aplicación?

¿Fue útil?

Solución

Usted tiene que usar acciones personalizadas para que:

  1. Añadir una nueva biblioteca ( "CustomActions") para el proyecto de instalación
  2. Add => Nuevo elemento => clase instalador
  3. Cambiar a vista de código y reemplazar el método de desinstalación

Código:

public override void Uninstall(IDictionary savedState)
{
    base.Uninstall(savedState);

    // Delete folder here.
}

Si no desea escribir su propio método DeleteFolder añadir una referencia a Microsoft.VisualBasic:

 Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents);
  1. Agregar el resultado del proyecto (salida principal) del proyecto CustomActions para el proyecto de instalación.
  2. Haga clic derecho en el proyecto de instalación y haga clic en acciones Ver => Custom
  3. Haga clic derecho desinstalación => Agregar acción => Carpeta de aplicaciones personalizadas => Salida primaria de CustomActions

Nota: Un gran ejemplo de esto se encuentra aquí . Explican este ejemplo en mayor detalle. Algo que no era evidente en esta respuesta en un primer momento fue el hecho de que había que añadir la plantilla de clase dentro del proyecto de instalación de la aplicación, NO proyecto de instalación de la aplicación. Básicamente el proyecto de instalación llama a los procs Instalar () y desinstalar () desde cualquier aplicación que se añade a las acciones personalizadas en el proyecto de instalación. La idea es reemplazar esos dos procsos para inyectar código para hacer su hacer una oferta ...

Otros consejos

crear instalador personalizado, se puede leer aquí para más detailes Editar Aquí es mejor enlace , la muestra está en VB.NET, pero no es difícil de entender;)

Según mi conocimiento, si está utilizando un instalador para instalar la aplicación y la carpeta es creada por su aplicación y no el instalador, entonces no va a eliminarlo.

En su lugar, tendrá que utilizar una acción personalizada que se ejecutará en la desinstalación que eliminarlo. O crear una aplicación personalizada C # que se ejecuta sólo cuando desinstalación está en curso que se elimine la carpeta. (Supongo que está utilizando algún instalador profesional como InstallShield)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top