我发现了如何创建向导页面来收集所需信息的方法。但是我的应用程序有一个config.js
文件,我需要在其中根据用户输入更改一些值。写入该文件的最佳方法是什么?使用写入整个文件SaveStringToFile
或以某种方式导入文件并替换某些字符串部分?
这是当前配置的摘录:
let cfg = {
hapi: {
port: 3000,
host: '0.0.0.0',
maxUploadBytes: 1000000 * 50 // 50 MB
},
jwt: {
key: 'secretkey',
algorithm: 'HS256',
expiresIn: '1h'
},
authentication: {
encryption: {
saltRounds: 10 // will be used in bcrypt to encrypt passwords
}
},
db_config: {
user: 'username',
password: 'pw',
server: 'DESKTOP-IG',
database: 'TestDB-1'
},
scripts: {
ConnectorInstallPath: "C:\\Program\ Files\\ Connector\\"
}
}
我必须要改变的值:user: 'username'
,password: 'pw'
,server: 'DESKTOP-IG'
,database: 'TestDB-1'
,port: 3000
,和ConnectorInstallPath: "C:\\Program\ Files\\ Connector\\"
。
使用类似的模式进行替换server: '*'
就足够了。它不需要更聪明。
非常感谢。
以下函数可以更改配置文件中的属性:
function SetConfigProperty(FileName, Name: string; Value: string): Boolean;
var
Lines: TArrayOfString;
Count, I, P: Integer;
HasComma: Boolean;
Line: string;
State: Integer;
begin
Result := True;
if not LoadStringsFromFile(FileName, Lines) then
begin
Log(Format('Error reading %s', [FileName]));
Result := False;
end
else
begin
State := 0;
Count := GetArrayLength(Lines);
for I := 0 to Count - 1 do
begin
Line := Lines[I];
P := Pos(':', Line);
if (CompareText(Trim(Copy(Line, 1, P - 1)), Name) = 0) then
begin
Log(Format('Found property %s at line %d', [Name, (I + 1)]));
HasComma := (Copy(Trim(Line), Length(Trim(Line)), 1) = ',');
Line := Copy(Line, 1, P) + ' ' + Value;
if HasComma then Line := Line + ',';
Lines[I] := Line;
Result := SaveStringsToFile(FileName, Lines, False);
if not Result then
begin
Log(Format('Error writing %s', [FileName]));
end
else
begin
Log(Format('Modifications saved to %s', [FileName]));
end;
break;
end;
if I = Count - 1 then
begin
Log(Format('Property %s not found', [Name]));
Result := False;
end;
end;
end;
end;
在Value
必须包含冒号后面完整内容。使用字符串属性,甚至必须包含引号。例如:
SetConfigProperty(FileName, 'server', '''DESKTOP-IG''');
您可以CurStepChanged
在ssPostInstall
步骤中的事件功能中使用该功能,例如(已安装文件时):
procedure CurStepChanged(CurStep: TSetupStep);
var
FileName: string;
ErrorCode: Integer;
begin
if CurStep = ssPostInstall then
begin
FileName := ExpandConstant('{app}\config.js');
SetConfigProperty(FileName, 'username', '''' + UsernameEdit.Text + '''');
SetConfigProperty(FileName, 'Password', '''' + PasswordEdit.Text + '''');
SetConfigProperty(FileName, 'server', '''' + ServerEdit.Text + '''');
SetConfigProperty(FileName, 'port', PortEdit.Text);
{ ... }
end;
end;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句