Как при создании установщика с помощью WiX объединить INI-файлы?

Поведение, которое я ищу, это:

if (!$bIniFileExists)
{
  CopyBaseIniFile($installDir, $newIniFile);
}
else
{
  foreach $key in $newIniFile
  {
     if (!exists $oldIniFile{$key})
     {
        AddKeyValueToIni($oldIniFile, $key, $newIniFile{$key});
     }
  }
}

Поэтому я хочу сохранить старые пользовательские настройки, но при этом скопировать любые новые настройки. Я новичок в WiX и после некоторого поиска в Google нашел объект IniFile WiX, но проблема в том, что я бы предпочел сохранить все значения по умолчанию в «ini-файле по умолчанию», что упрощает запуск приложения из отладчика. Используя решение IniFile, мне нужно было бы включить ключи как в config.ini, так и в программу установки, что кажется ненужным дублированием усилий. Есть ли хороший способ сделать то, что я хочу?


person Rollie    schedule 15.11.2012    source источник


Ответы (1)


Для INI и XML это становится действительно сложным беспорядком. Чтобы сделать то, что вы предлагаете, я предлагаю переписать ваш код 2, поддерживающий 2 файла INI.

СТОК.INI

ПОЛЬЗОВАТЕЛЬ.INI

Идея заключается в том, что установщик всегда может безопасно перезаписать STOCK.INI, потому что он «владеет» им.

С другой стороны, USER.INI не устанавливается установщиком, он создается приложением.

Затем код, который считывает настройки, должен проверить USER.INI, чтобы увидеть, существует ли значение, и не считывает ли он его из STOCK.INI.

Это позволяет управлять stock.ini, а user.ini действовать как преобразование.

Попытка управлять всем этим в одном файле (особенно XML) очень и очень сложна и требует тщательного планирования при принятии решения о том, какие атрибуты сохранить, а какие заменить в процессе слияния данных.

person Christopher Painter    schedule 15.11.2012