Как создать INI-файл (если его нет) и модифицировать (если он есть) - всего с одним значением?

NicTon

Новичок
Можно.

Можно, но тогда ...

Необходимо отредактировать :
1. Delete(0);
2. Insert(0,...
1. Поясните, пожалуйста, на примере, кода, НЕ понял, что значит: "Можно, но тогда ..."

Если я изменю, так как вас спросил, из-за этого возникает ошибка?
Delete(0) - тогда удаление НЕ произойдёт? А Insert - куда вписывать?

2. Если у меня кроме вашего, есть ещё процедуры и функции в секции Code, такие, например, как: procedure InitializeWizard(), procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); function InitializeSetup(): Boolean; procedure GetInstalledProgramm(Param: String) и function argv(Param: String): TArrayOfString;

То в каком порядке и где нужно расположить ВАШ код - это имеет значение?

3. Также вопрос по поводу секции Files. Файл-пустышку (setup.ini) - имеет ли значение где размещать в начале или в конце (до или после всех файлов приложения)?

P.S. Данный код действует с теми же правами, что и даны всему установщику приложения, никак НЕ нужно повышать права, для копирования/изменения файлов в Документах пользователя?
 
Последнее редактирование:

SBalykov

Старожил
М..м..да ...а....
Как все запущенно....
Отвечаю попорядку:
NicTon написал(а):
1. Поясните, пожалуйста, на примере, кода, НЕ понял, что значит: "Можно, но тогда ..."
необходимо дочитать до конца сообщение.
NicTon написал(а):
Если я изменю, так как вас спросил, из-за этого возникает ошибка?
Да.
NicTon написал(а):
Delete(0) - тогда удаление НЕ произойдёт?
Delete(0) - удаляем первую строку; Delete(1) - удаляем вторую строку и т.д.
NicTon написал(а):
А Insert - куда вписывать?
Ну, наверное, в скрипт. Там где он есть.
NicTon написал(а):
2. Если у меня кроме вашего, есть ещё процедуры и функции в секции Code, такие, например, как: procedure InitializeWizard(), procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); function InitializeSetup(): Boolean; procedure GetInstalledProgramm(Param: String) и function argv(Param: String): TArrayOfString;
То в каком порядке и где нужно расположить ВАШ код - это имеет значение?
В том порядке, как и положено в InnoSetup, после процедуры CurPageChanged.
NicTon написал(а):
3. Также вопрос по поводу секции Files. Файл-пустышку (setup.ini) - имеет ли значение где размещать в начале или в конце (до или после всех файлов приложения)?
Абсолютно никакого. Он извлекается только в том случае, если такового нет в заданной директории.

NicTon написал(а):
P.S. Данный код действует с теми же правами, что и даны всему установщику приложения, никак НЕ нужно повышать права, для копирования/изменения файлов в Документах пользователя?
Для выполнения данной операции не требуется никаких дополнительных привелегий.
 

NicTon

Новичок
М..м..да ...а....
Как все запущенно....
Отвечаю попорядку:

необходимо дочитать до конца сообщение.

Да.

Delete(0) - удаляем первую строку; Delete(1) - удаляем вторую строку и т.д.

Ну, наверное, в скрипт. Там где он есть.

В том порядке, как и положено в InnoSetup, после процедуры CurPageChanged.

Абсолютно никакого. Он извлекается только в том случае, если такового нет в заданной директории.


Для выполнения данной операции не требуется никаких дополнительных привелегий.
Теперь установщик затирает первую строку, в которой (в setup.ini, если он существует), стоит Profile, теперь у меня 2 строчки с Local = ...

Значит надо чтобы изначально, Locale в setup.ini прописывался во 2-й строчке?
Либо придумать способ, чтобы скрипт сам "искал" ключ Locale = ... - где бы он НЕ находился?


Если запустить программу, и что-то там изменить, то первой строчкой становится - Profile, на вторую переносится Locale (это я про то, что готовый setup.ini, - если он есть выглядит так, я же присылал его полностью).
Profile = 0x20043E04340430043D04
Locale = ru

[option]
autoload: 1
subtitles: 1
tutorial: 1
complexity: normal

[sound]
Effects: 1
Music: 1
Speech: 1

[display]
Resolution: 1600 1200
ColorBits: 32
Brightness: 0.5
Antialiasing: 0
Details: 2
TextureDetails: 2
Exposure: 1

[keyboard]
MouseResponce: 1
FlipMouse: 0

[gamepad]
ThumbResponce: 1
FlipThumb: 0

Пожалуйста, создайте, у себя setup.ini, в Моих документах\My Program

Запустите установщик, и если есть setup.ini и если его НЕТ - проверьте, пожалуйста!

И попробуйте, чтобы при установке программы ничего НЕ менялось, кроме значения (ru/en), в ключе Locale, (если setup.ini - существует)

Прописать ВСЕ ЭТИ значения в скрипт НЕЛЬЗЯ (как я ранее и говорил уже) - у каждого свой setup.ini, и у него будут другие значения, ТОЛЬКО названия секций и ключей будут теми же! (У них также будут: Profile, Locale, [option] - НО С СОВЕРШЕННО ИНЫМИ ЗНАЧЕНИЯМИ!)
 
Последнее редактирование:

NicTon

Новичок
Дело в этом?
''+#13#10+ - перенести именно на вторую строчку? А "поиска" нет, чтобы где бы НЕ находился ключ Locale, заменить его? А НЕ искать конкретно во второй строчке?

и вы не меняли значение Delete и Insert, как писал SBalykov (а я менял ведь)

Так срабатывает, если файла НЕТ и если строчки в том порядке, что и указано, а если он есть (пустой или со строчками в другом порядке НЕ прокатывает). Также НЕ прокатывает если файл и/или папка с атрибутом "только чтение", "архивный" и т.п. Например, пользователь сохранил свои данные, а теперь распаковал их архива.

А КАК В ЛЮБОМ СЛУЧАЕ СДЕЛАТЬ "ИГНОРИРОВАНИЕ" или успешное завершение установки, даже если возникнет какая-то ошибка, чтобы в любом случае, процесс НЕ "вешался" и установка завершалась?

СПАСИБО! Это самое оптимальное из того, что было вообще!

Такая вроде бы мелочь, а столько возни! (((
 
Последнее редактирование:
Сверху