Цитата kotkovets:
Еще вам нужно читать файл конфигурации, проверить, а не отметил ли юзер нужную секцию,
если узнаем, что юзер отметил - отмечаем программно нужную секцию. »
|
Изначально задачка так и сформулирована, так как, файл конфигурации по любому будет находиться в директории инсталлятора, и проверять его наличие нет смысла.
Имеет значение секция с каким типом установки выбрана и прописана в файле конфигурации.
Что-то так примерно...
Код:
Function .OnInit
StrCpy $1 ${MultiUser}
StrCpy $WindowCaption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
StrCpy $SysDrive $WINDIR 2
StrCpy $GMODE 0 ;если обычный режим, то $GMODE = 0
StrCpy $WindowCaption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
${WordReplace} "$EXEFILE" ".exe" ".ini" "+" "$INIFILE" ;подменяем расширение на ini c тем же именем, что и установщик
StrCpy $INIFILE "$EXEDIR\$INIFILE" ;$INIFILE - путь, где будет создан файл конфигурации
${GetOptions} $CMDLINE "/G" $0
${IfNot} ${Silent} ; условие работы генератора, если не тихий режим
${AndIfNot} ${Errors} ; И не установлен флаг ошибки
;здесь команды выполняться будут в режиме генератора, до конца конструкции ${EndIf}
StrCpy $GMODE 1 ;с ключом /G, $GMODE = 1, режим генератора
StrCpy $WindowCaption "Генератор ответов ${PRODUCT_NAME} ${PRODUCT_VERSION}" ;меняем название заголовка
IfFileExists "$INIFILE" 0 +2
Delete "$INIFILE" ;удаляем предыдущий файл конфигурации
${EndIf}
;==========================================================================================
;${If} ${Silent}
${If} ${FileExists} "$EXEDIR\FSImage.ini"
MessageBox MB_OK "файл конфигурации есть"
ReadINIStr $0 "$EXEDIR\FSImage.ini" "Sections" "AllUser"
MessageBox MB_OK $0
StrCmp $0 "1" 0 +2
!insertmacro SelectSection ${AllUser}
${EndIf}
FunctionEnd
Проверил. Работает. Но кажется, что-то подредактировать еще нужно..
${EndIf}
${EndIf}
FunctionEnd
так не компилируется, пришлось расставить ${EndIf}
${If} ${Silent}
и так не компилируется, пришлось закоментировать.