es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La variable de entorno ProgramData no es reconocida por wixsharp.

Intenté eliminar una carpeta al desinstalar, pero no hace nada. Al especificar la ruta, sin embargo, funciona. No funciona:

“` public void OnAfterInstall(SetupEventArgs e)
{
if (e.IsUninstalling)
{

<pre><code> DirectoryInfo dir = new DirectoryInfo(@"CommonAppDataFolder\myFolder");
if ((bool)(dir?.Exists))
{
dir?.Delete(true);
}

}
}
</code></pre>

<pre><code><br />Funciona:

“`public void OnAfterInstall(SetupEventArgs e)
{
if (e.IsUninstalling)
{

DirectoryInfo dir = new DirectoryInfo(@”C:\ProgramData\myFolder”);
if ((bool)(dir?.Exists))
{
dir?.Delete(true);
}

}
}

Edición:
He intentado este código y estoy obteniendo el mismo error:

        var programFiles = Environment.ExpandEnvironmentVariables("%ProgramFiles%");
        var manifestFile = Path.Combine(programFiles,@"\My Company\myFile.man");

        FileInfo fInfo = new FileInfo(manifestFile);
        if ((bool)(fInfo?.Exists))
        {
            FileSecurity security = fInfo.GetAccessControl();
            security.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null),
                FileSystemRights.ReadAndExecute, AccessControlType.Allow));
            fInfo.SetAccessControl(security);
        }

        var CMDCommand = $@"/C wevtutil im {manifestFile}";
        Process.Start("CMD.exe", CMDCommand);

También intenté esto:

var programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
    var manifestFile = programFiles + @"\My Company\myFile.man";

Ejecutando este código en C:\ funciona bien…

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con la ruta de la carpeta que se está eliminando en el método OnAfterInstall. Cuando se usa CommonAppDataFolder\miCarpeta, puede que no esté resolviendo correctamente la ruta durante la desinstalación, lo que resulta en la eliminación fallida de la carpeta. El uso de una ruta absoluta como C:\ProgramData\miCarpeta asegura que la ruta sea correcta y que la carpeta se pueda eliminar correctamente.

    De manera similar, en el segundo fragmento de código, el uso de Environment.ExpandEnvironmentVariables("%ProgramFiles%") y Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) puede que no esté resolviendo correctamente la ruta para el archivo miArchivo.man, lo que resulta en un error. El uso de una ruta absoluta como C:\Program Files\Mi Empresa\miArchivo.man debería asegurar que se use la ruta correcta y que se pueda acceder al archivo correctamente.

Comments are closed.