Innosetup, передовая практика установки переменных передачи внешнего приложения - PullRequest
2 голосов
/ 24 февраля 2012

У меня есть задача установки с использованием InnoSetup, и я не совсем уверен, как это сделать правильно.

Ситуация выглядит следующим образом: 1 пользовательская страница innosetup с некоторыми текстовыми полями и флажками. В основном, содержит targeturl и имя сервера Windows. Может быть, позже. Эта пользовательская информация должна быть передана в два разных файла app.config.

Вопрос сейчас, как это сделать? Моим первым намерением было использовать сегмент [Run] с набором параметров, таких как: [Бежать] Имя файла: {app} \ MyApp.exe; Параметры: / установить; Флаги: свернуты

Но я не знаю, как передать пользовательские данные в приложение.

Возможно, можно создать переменные окружения и таким образом передать данные? Возможно, можно создать временный файл с необходимыми значениями? Возможно, это следует делать в загруженной dll во время установки, а не после установки?

Любые предложения будут очень признательны.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

и спасибо. Для "@ DenverCoder9":

В основном то, что я в итоге делал, это почти строка за строкой в ​​прилагаемых примерах из Inno-setup. Пропустил тот факт, что Inno-setup позволяет манипулировать XML (через MSXML), что позволило мне: включите пример файла конфигурации (app.config.sample). загрузить образец файла конфигурации изменить его, используя собранные данные из пользовательской формы. сохраните его в правильном месте.

[Files]
 ...
Source: ..\UpdateService\UpdateService\Server\bin\Release\UpdateService.exe.config; DestDir: {app}; Permissions: users-modify; Flags: comparetimestamp onlyifdoesntexist; AfterInstall: MyAfterInstall;


[Code]
procedure MyAfterInstall();
var XMLDoc : Variant;
var RootNode : Variant;
begin
//  if(FLAG_UPDATE_SERVICE_CONFIG) then begin
    XMLDoc := CreateOleObject('MSXML2.DOMDocument');
    XMLDoc.async := False;
    XMLDoc.resolveExternals := False;
    XMLDoc.load(ExpandConstant(CurrentFilename));
    RootNode := XMLDoc.documentElement;
    ...
   end;
end;

Это дает мне дополнительное преимущество, так как у меня есть образец файла, который может предоставить любой, кому нужно вручную изменить приложение.

1 голос
/ 25 февраля 2012

Не можете ли вы использовать аргументы командной строки для передачи значений, введенных в установщике Inno Setup, во внешнее приложение?

Внешнее приложение (которое я предполагаю, что .NET) может обрабатывать запись значений из команды-линии к файлам конфигурации (то есть 'App.config').Метод Main(string[] args) приложения .NET может проверять значения аргументов командной строки.Используйте раздел [Run], как вы предложили, и передайте эти значения в качестве параметров (используя Parameters).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...