Skip to content

Commit

Permalink
RemoveFolderEx: Remove a folder recursively. Differs from WixUtilExte…
Browse files Browse the repository at this point in the history
…nsion's RemoveFolderEx in proper handling of reparse points (symbolic links, mount volumes, etc.)

Reparse points are deleted before RemoveFiles action. On rollback, the reparse points are restored
Worksaround Windows Installer bugous handling of reparse points- such as deleting the target of symbolic link files, or keeping directory symbolic link if their target contains files
  • Loading branch information
nirbar committed Nov 14, 2024
1 parent ac6efc8 commit 0f5c439
Show file tree
Hide file tree
Showing 23 changed files with 1,201 additions and 125 deletions.
6 changes: 6 additions & 0 deletions PanelSwCustomActions/CommonDeferred.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "XslTransform.h"
#include "RestartLocalResources.h"
#include "ConcatFiles.h"
#include "ReparsePoint.h"

// ReceiverToExecutorFunc implementation.
HRESULT ReceiverToExecutor(LPCSTR szReceiver, CDeferredActionBase** ppExecutor)
Expand Down Expand Up @@ -91,6 +92,11 @@ HRESULT ReceiverToExecutor(LPCSTR szReceiver, CDeferredActionBase** ppExecutor)
WcaLog(LOGLEVEL::LOGMSG_VERBOSE, "Creating ConcatFiles handler");
(*ppExecutor) = new CConcatFiles();
}
else if (0 == ::strcmp(szReceiver, "CReparsePoint"))
{
WcaLog(LOGLEVEL::LOGMSG_VERBOSE, "Creating ReparsePoint handler");
(*ppExecutor) = new CReparsePoint();
}
else
{
hr = E_INVALIDARG;
Expand Down
Loading

0 comments on commit 0f5c439

Please sign in to comment.