Chrome的Local State
配置文件爲JSON格式。
Inno安裝程序本身不支持JSON。您可以嘗試使用簡單的字符串操作手動破解文件。
但我建議您使用一些第三方庫來解析JSON,如TLama's Inno JSON Config library。
該代碼可以如下所示。
該代碼在JSON中添加/設置此密鑰。我希望這是,你在做什麼。
"protocol_handler": {
"excluded_schemes": {
"myprotocol": true
}
}
[Files]
Source: "JSONConfig.dll"; Flags: dontcopy
[code]
function JSONQueryBoolean(FileName, Section, Key: WideString;
Default: Boolean; var Value: Boolean): Boolean;
external '[email protected]:jsonconfig.dll stdcall';
function JSONWriteBoolean(FileName, Section, Key: WideString;
Value: Boolean): Boolean;
external '[email protected]:jsonconfig.dll stdcall';
procedure EnableChromeProtocol(Protocol: string);
var
FileName: WideString;
BoolValue: Boolean;
begin
FileName := ExpandConstant('{localappdata}') + '\Google\Chrome\User Data\Local State';
Log('Chrome local state config file: ' + FileName);
if JSONQueryBoolean(
FileName, 'protocol_handler.excluded_schemes', Protocol, False, BoolValue) then
begin
if BoolValue then
begin
Log('Protocol is enabled');
end
else
begin
Log('Protocol is disabled');
end;
end
else
begin
Log('Protocol not configured');
BoolValue := False;
end;
if not BoolValue then
begin
if JSONWriteBoolean(FileName, 'protocol_handler.excluded_schemes', Protocol, True) then
begin
Log('Protocol enabled');
end
else
begin
Log('Protocol enabling failed');
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
EnableChromeProtocol('myprotocol');
end;
end;
的代碼需要創新安裝的Unicode版本。
另請參閱Inno Setup: Working with JSON。
還有一個替代實施,JsonParser。
哇,這正是我所追求的,即使我現在無法測試,我已經可以說這是我需要的東西...今晚我會回家檢查,我會回來如果需要。多謝! – Psychokiller1888
好的,整件事情都很有效,只需要確保Chrome已關閉以及新的後臺服務,否則將覆蓋此安裝過程。不是,爲了啓用協議,它應該被設置爲「false」。但由於某些原因,它仍然無法使用我的網址,但這是另一個問題。感謝您的幫助和腳本! – Psychokiller1888