У меня возникли некоторые проблемы с тем, чтобы этот код функционировал правильно. То, что я пытаюсь выполнить, - это использование пользователем ConnectionString (во время установки) и его мест в уже отформатированном файле. Файл Local.config находится в каталоге {app} \ local. Мне удалось заставить его работать несколько раз в директоре {app}, но теперь у меня ничего нет.Как изменить Local.config из сценария Innosetup
Source: "Local\Local.config"; DestDir: "{app}\Local"; AfterInstall: ConvertConfig('Local.config'); Flags: ignoreversion
var
UserPage: TInputQueryWizardPage;
xmlFileName: String;
procedure InitializeWizard;
begin
UserPage := CreateInputQueryPage(wpWelcome,
'Pryme Connection String', 'SQL Connecton String', 'Please Enter In SQL Connection String then click Next.');
UserPage.Add('connectionString:', False);
end;
procedure ConvertConfig(xmlFileName: String);
var
xmlFile: String;
xmlInhalt: TArrayOfString;
strName: String;
strTest: String;
tmpConfigFile: String;
k: Integer;
begin
xmlFile := ExpandConstant('{app}') + '\' + 'Local.config';
tmpConfigFile:= ExpandConstant('{app}') + '\config.tmp';
strName := UserPage.Values[0];
if (FileExists(xmlFile)) then begin
//alles in string array speichern
LoadStringsFromFile(xmlFile, xmlInhalt);
//durch Array iterieren
for k:=0 to GetArrayLength(xmlInhalt)-1 do
begin
strTest := xmlInhalt[k];
if (Pos('name="Pryme"', strTest) <> 0) then
begin
strTest := ' <add name="Pryme" connectionString="' + strName + '"/> ';
end;
SaveStringToFile(tmpConfigFile, strTest + #13#10, True);
end;
DeleteFile(xmlFile); //delete the old exe.config
RenameFile(tmpConfigFile,xmlFile);
end;
end;
Это далеко не правильный выбор. Для обработки XML-файлов вы должны использовать синтаксический анализатор XML. – TLama
@TLama Извините, вы так себя чувствуете. Я вытащил данные от другого человека на этом форуме и был изменен для моих нужд. Пожалуйста, предложите лучшее решение. – TimorDomini
Не беспокойтесь. Я просто отвечал на ваше утверждение, что это правильно. Это не. То, что это работает, не означает, что оно правильно. [downvotes не мои] – TLama