Проблема Скрипт для сборки CS:S

oxionex

Мимокрокодил
Всем привет. Делаю сборку CS:S nosteam. Гуглил на просторах интернета скрипт, который сможет изменять ник и клан тэг в файле rev.ini. Нашёл, пришлось, правда, доделать ввод клантэга. Проблема в следующем: как заставить установщик по дефолту сохранять клантэг и ник в UTF-8 и убрать чекбокс "сохранить в UTF-8". Может кто подсказать решение проблемы? Скрипт прилагаю ниже. Заранее спасибо!

Код:
#ifndef UNICODE
    #error Unicode version of Inno Setup is required to compile this script
#endif

var
  RevEmuPage: TInputQueryWizardPage;
  ConvertCheckBox: TCheckBox;

procedure SetNickname(Nickname: String; Filename: String; IsConvert: Boolean);
var
    arrAnsi, arrUtf8: TArrayOfString;
    i: Integer;
begin
    if IsConvert then
    begin
        LoadStringsFromFile(Filename, arrAnsi);
        SetArrayLength(arrUtf8, 1);
        for i := 0 to GetArrayLength(arrAnsi)-1 do
        begin
            if Pos(LowerCase('PlayerName='), LowerCase(arrAnsi[i])) = 0 then
                SaveStringToFile(Filename, arrAnsi[i] + #13#10, i <> 0)
            else begin
                arrUtf8[0] := Copy(arrAnsi[i], 0, Length('PlayerName=')) + Nickname + #10;
                SaveStringsToUTF8File(Filename, arrUtf8, i <> 0);
            end;
        end;
    end else SetIniString('steamclient', 'PlayerName', Nickname, Filename);
end;

procedure SetClantag(Clantag: String; Filename: String; IsConvert: Boolean);
var
    arrAnsi, arrUtf8: TArrayOfString;
    i: Integer;
begin
    if IsConvert then
    begin
      LoadStringsFromFile(Filename, arrAnsi);
        SetArrayLength(arrUtf8, 1);
        for i := 0 to GetArrayLength(arrAnsi)-1 do
        begin
            if Pos(LowerCase('Clantag='), LowerCase(arrAnsi[i])) = 0 then
                SaveStringToFile(Filename, arrAnsi[i] + #13#10, i <> 0)
            else begin
                arrUtf8[0] := Copy(arrAnsi[i], 0, Length('Clantag=')) + Clantag + #10;
                SaveStringsToUTF8File(Filename, arrUtf8, i <> 0);
            end;
        end;
    end else SetIniString('steamclient', 'Clantag', Clantag, Filename);
end;

procedure NicknameOnChange (Sender: TObject);
begin
    WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
end;

procedure InitializeWizard();
begin
    RedesignWizardForm;

    RevEmuPage := CreateInputQueryPage(wpInfoAfter, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');
    with RevEmuPage do
    begin
        Add('Ник:', False);
        Edits[0].OnChange := @NicknameOnChange;
        Add('Клан-тэг:', False);
    end;
    ConvertCheckBox := TCheckBox.Create(WizardForm);
    with ConvertCheckBox do
    begin
        Parent := RevEmuPage.Surface;
        SetBounds(RevEmuPage.Edits[0].Left, RevEmuPage.Edits[0].Top + ScaleY(100), ScaleX(200), ScaleY(17));
        Caption := 'Сохранить в UTF-8';
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
    if CurPageID = RevEmuPage.ID then WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
    if CurPageID = wpFinished then SetNickname(RevEmuPage.Values[0], ExpandConstant('{app}\rev.ini'), ConvertCheckBox.Checked);
    if CurPageID = wpFinished then SetClantag(RevEmuPage.Values[0], ExpandConstant('{app}\rev.ini'), ConvertCheckBox.Checked);
end;
 

Snoopak96

Старожил
oxionex,
могли и сами подумать, вроде бы задачка на уровне 2+2

Код:
#ifndef UNICODE
    #error Unicode version of Inno Setup is required to compile this script
#endif

var
  RevEmuPage: TInputQueryWizardPage;
  ConvertCheckBox: TCheckBox;

procedure SetNickname(Nickname: String; Filename: String);
var
    arrAnsi, arrUtf8: TArrayOfString;
    i: Integer;
begin
        LoadStringsFromFile(Filename, arrAnsi);
        SetArrayLength(arrUtf8, 1);
        for i := 0 to GetArrayLength(arrAnsi)-1 do
        begin
            if Pos(LowerCase('PlayerName='), LowerCase(arrAnsi[i])) = 0 then
                SaveStringToFile(Filename, arrAnsi[i] + #13#10, i <> 0)
            else begin
                arrUtf8[0] := Copy(arrAnsi[i], 0, Length('PlayerName=')) + Nickname + #10;
                SaveStringsToUTF8File(Filename, arrUtf8, i <> 0);
            end;
        end;
end;

procedure SetClantag(Clantag: String; Filename: String);
var
    arrAnsi, arrUtf8: TArrayOfString;
    i: Integer;
begin
      LoadStringsFromFile(Filename, arrAnsi);
        SetArrayLength(arrUtf8, 1);
        for i := 0 to GetArrayLength(arrAnsi)-1 do
        begin
            if Pos(LowerCase('Clantag='), LowerCase(arrAnsi[i])) = 0 then
                SaveStringToFile(Filename, arrAnsi[i] + #13#10, i <> 0)
            else begin
                arrUtf8[0] := Copy(arrAnsi[i], 0, Length('Clantag=')) + Clantag + #10;
                SaveStringsToUTF8File(Filename, arrUtf8, i <> 0);
            end;
        end;
end;

procedure NicknameOnChange (Sender: TObject);
begin
    WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
end;

procedure InitializeWizard();
begin
//    RedesignWizardForm;

    RevEmuPage := CreateInputQueryPage(wpInfoAfter, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');
    with RevEmuPage do
    begin
        Add('Ник:', False);
        Edits[0].OnChange := @NicknameOnChange;
        Add('Клан-тэг:', False);
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
    if CurPageID = RevEmuPage.ID then WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
    if CurPageID = wpFinished then SetNickname(RevEmuPage.Values[0], ExpandConstant('{app}\rev.ini'));
    if CurPageID = wpFinished then SetClantag(RevEmuPage.Values[0], ExpandConstant('{app}\rev.ini'));
end;
 

Snoopak96

Старожил
хотя вам и так уже ответили на соседнем сайте и там по лучше вариант реализации чем этот.
 
Сверху