Вы могли бы лучше спрашивать это относительно эти WiX-пользовательский список рассылки .
WiX лучше всего используется с твердым пониманием того, что делает Windows Installer. Вы могли бы рассмотреть получение" Полное руководство к Windows Installer ".
действие, которое удаляет существующий продукт, действие RemoveExistingProducts . Поскольку последствия того, что это делает, зависят от того, где это запланировало - а именно, заставляет ли отказ старый продукт быть переустановленным, и копируются ли неизменные файлы снова - необходимо запланировать его сами.
RemoveExistingProducts
процессы
элементы в текущей установке, соответствуя эти @Id
атрибут к UpgradeCode
(определенный в
элемент) всех установленных продуктов в системе. Эти UpgradeCode
определяет семью сопутствующих товаров. Будут удалены любые продукты, которые имеют этот UpgradeCode, версии которого попадают в диапазон, определенный, и где эти UpgradeVersion/@OnlyDetect
атрибут no
(или опущен).
документация для RemoveExistingProducts
упоминания, устанавливающие UPGRADINGPRODUCTCODE
свойство. Это означает, что процесс удаления для продукта, удаляемого , получает то свойство, значение которого Product/@Id
для устанавливаемого продукта.
, Если Ваша исходная установка не включала UpgradeCode
, Вы не будете в состоянии использовать эту функцию.
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
Один из подходов - перебрать массив, вызывая сообщение description
для каждого элемента:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
Другой подход - сделать что-то на основе класса каждого элемента:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
if ([obj isKindOfClass:[NSNumber class]])
{
// append something
}
else
{
[result appendString:[obj description]];
}
}
NSLog(@"The concatenated string is %@", result);
Если вам нужны запятые и другая посторонняя информация, вы можете просто сделать:
NSString * result = [array description];