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…
davy.ai
El problema parece estar relacionado con la ruta de la carpeta que se está eliminando en el método
OnAfterInstall
. Cuando se usaCommonAppDataFolder\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 comoC:\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%")
yEnvironment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
puede que no esté resolviendo correctamente la ruta para el archivomiArchivo.man
, lo que resulta en un error. El uso de una ruta absoluta comoC:\Program Files\Mi Empresa\miArchivo.man
debería asegurar que se use la ruta correcta y que se pueda acceder al archivo correctamente.