Как изменить файл machine.config с помощью Inno setup?

#installation #inno-setup #machine.config

#установка #inno-setup #machine.config

Вопрос:

Как изменить файл machine.config с помощью Inno setup?

Я просмотрел документацию и поискал в Google и ничего не могу найти, поэтому мне кажется, что я задаю неправильный вопрос или упускаю что-то очевидное.

Я предполагаю, что если это не очевидно, то для этого требуется написать небольшой скрипт. Если это так, у кого-нибудь есть хороший пример?

Редактировать: machine.config — это файл в формате xml, используемый для хранения параметров конфигурации на уровне компьютера для приложений .net.

Комментарии:

1. Inno может редактировать любой файл, в который он может записывать. Как зависит от того, как он отформатирован. Не могли бы вы предоставить немного больше информации и пример того, что вы хотите отредактировать.

Ответ №1:

Прошло много времени с тех пор, как я в последний раз использовал Inno Setup, но я думаю, что у вас есть две возможности. Лучшим и самым простым было бы написать небольшое EXE-приложение, которое ваш установщик запустит после завершения установки и удаления:

 [Files]
Source: "mconfig.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; 

[Run]
Filename: "{tmp}mconfig.exe"; Parameters: "/inst"; Flags: waituntilterminated runhidden

[UninstallRun]
Filename: "{tmp}mconfig.exe"; Parameters: "/uninst"; Flags: waituntilterminated runhidden
  

Теперь я не знаю, на каком языке / или какую модификацию вам нужно выполнить, но простое консольное приложение на c #, которое выполняет некоторые простые модификации machine.config, может выглядеть так:

 using System;
using System.Configuration; // Note: Also add a reference to "System.Configuration.dll"

public class Program {
    static void Main(string[] args) {
        Configuration config = ConfigurationManager.OpenMachineConfiguration();
        if (args.Length > 0) {
            if (args[0] == "/inst") {
                config.AppSettings.Settings.Add("Test", "Value");
            } else if (args[0] == "/uninst") {
                config.AppSettings.Settings.Remove("Test");
            }
            config.Save();
        }
    }
}
  

Теперь, еще один способ сделать это — записать это как функцию на встроенном в Inno Setup языке «Pascal scripting» (если у вас есть предыдущий опыт работы с Turbo / Borland Pascal или Delphi, который было бы интересно оживить). Однако, попробовав это сам, я бы рекомендовал отказаться от этого, поскольку он довольно ограничен, но может быть полезен для других (менее сложных) вещей.

Надеюсь, это поможет!