Hi,
I've wrote a RemoveWholeFolder custom action, to remove all files and sub
folders.
Here is the code of addthe record to RemoveFile table.
private static void AddItemToRemoveFileTable(DirectoryInfo folder,
string componentId, Session session, View view)
{
string fileRecordName = string.Format(CultureInfo.InvariantCulture,
"tempRemoveFileRecord_{0}", folderCount);
string folderRecordName =
string.Format(CultureInfo.InvariantCulture, "tempRemoveFolderRecord_{0}",
folderCount);
string propertyName = string.Format(CultureInfo.InvariantCulture,
"tempRemoveFolderPropertyName_{0}", folderCount);
folderCount++;
session[propertyName] = folder.FullName;
using (Record record = session.Database.CreateRecord(5))
{
record.SetString(1, fileRecordName);
record.SetString(2, componentId);
// Remove all files under the folder TODO: verify if file
without extension could be deleted as well
record.SetString(3, "*.*");
record.SetString(4, propertyName);
// Install mode: remove on uninstall
record.SetInteger(5, 2);
view.InsertTemporary(record);
}
using (Record record = session.Database.CreateRecord(5))
{
record.SetString(1, folderRecordName);
record.SetString(2, componentId);
// remove the folder
record.SetString(3, null);
record.SetString(4, propertyName);
// Install mode: remove on uninstall
record.SetInteger(5, 2);
view.InsertTemporary(record);
}
}
private static int folderCount = 0;
The records are added into the RemoveFile table correctly. However, then the
Windows Installer report a fatal error 2727
DEBUG: Error 2727: The directory entry 'tempRemoveFolderPropertyName_0' does
not exist in the Directory table
MSI (s) (E8:F4) [02:13:39:134]: Product: System Center Atlanta -- The installer
has encountered an unexpected error installing this package. This may indicate
a problem with this package. The error code is 2727. The arguments are:
tempRemoveFolderPropertyName_0, ,
There is a property tempRemoveFolderPropertyName_0 but it's not in the
Directory table.
Property(S): tempRemoveFolderPropertyName_0 = C:\Program Files\Microsoft
Atlanta\GatewayData\abc
However, according to the document
http://msdn.microsoft.com/en-us/library/aa371201(VS.85).aspx , the property is
not required to be in Directory table.
DirProperty
Name of a property whose value is assumed to resolve to the full path to the
folder of the file to be removed. The property can be the name of a directory
in the Directory
table<http://msdn.microsoft.com/en-us/library/aa368295(v=VS.85).aspx>, a
property set by the AppSearch
table<http://msdn.microsoft.com/en-us/library/aa367579(v=VS.85).aspx>, or any
other property that represents a full path.
Any idea about why it would fail?
P.S. I checked the code in wix-contrib RemoveFolderEx, and find it's doing the
same thing as I did.
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users