PDA

Показать полную графическую версию : FastStone Image Viewer


Страниц : 1 [2] 3 4 5 6 7 8 9 10 11 12

EgOrus
15-11-2006, 16:37
fantik
это все дело вкуса, перепаковка в инстоляр по времени затраченному на пересборку новой версии от твоего варианта не отличается, нужно нажать лишь одну кнопку:
Плюсы же хоть и мелкие но есть:
1. Ярлыки и "коректный" деинстол, прописывается в реестре и в меню установка удаление программ.
2. Вариантность установки, можно сделать как портабл установку через ключи установки так и обычную, установить ярлыки только туда, куда нужно или не устанавливать совсем, установить ассоциации и т.п.
3. Чисто эстетически мне приятней знать что софтина у меня ставится не через батник, а нормальным установщиком :-)

fantik
15-11-2006, 17:29
EgOrus
Ну что ж, согласен со всем, кроме пункта "корректный анинстал", потому как в моём (даже пусть и батнике), он родной, роднее некуда.

Ну, соответственно, скрипт в студию, сделаю пару улучшений, могу скинуть сорс тебе, сделаешь экзешничек :)

EgOrus
15-11-2006, 18:04
Ну, соответственно, скрипт в студию, сделаю пару улучшений, могу скинуть сорс тебе, сделаешь экзешничек
перепаковкой я заниматья не буду, пока нет времени, возможно позже сделаю
Надеюсь я ответил на вопрос зачем нужна перепаковка.

Доделывай свой вариант тоже прикреплю к шапке.

Black Babay
16-11-2006, 11:01
Конструктор для сборки FastStone 2.8, сделанный на основе сборки уважаемого fantik.

Что хотелось бы доработать: сейчас все настройки реестра вносятся через reg-файл, запускаемый из батника в конце установки. Процесс запуска скрыт от пользователя. После установки reg-файл, батник и RegExec.exe автоматически удаляются. По хорошему, файловые ассоциации и прочее надо внести в сам скрипт, и избавится от этих трех файлов. Сам со скриптами только начал знакомится, поэтому пока не осилил.

Конструктор (http://www.slil.ru/23413808)

fantik
16-11-2006, 14:34
Исправленная ссылка на конструктор (http://www.slil.ru/23413808)

На самом деле RegExec - файл, который при обычном запуске запускает regedit, а при передаче файла в качестве аргумента - заменяет в нём %programfiles% на актуальный путь програм файлс, так же как и %system% и т.п. переменные, и после этого тихонько импортирует новый исправленный reg-файл в реестр

Black Babay
16-11-2006, 14:55
Я сначала, пробовал без него, но тогда если в контекстном меню выбрать "Просмотр в Fast Stone..." вылетала ошибка, что "Нет прав для просмотра ресурса", а с ним все нормально, причем рег-файл был один и тотже.

ЗЫ. Ссылку поправил.
ЗЫ. ЗЫ. А темы к нему можно где-то найти? Темненькой не хватает...

fantik
16-11-2006, 15:04
Black Babay
Насчет тем не знаю.

Естественно, RegExec не правит файл, создает новый, выполняет и сразу удаляет. Но при этом заменяет все %ProgramFilesDblSlash% на "C:\\Program Files", иначе импорт в реестр корявый получится, и ошибка поэтому и выскакивает

Black Babay
16-11-2006, 15:20
То-есть если в том регфайле исправить все %ProgramFilesDblSlash% на все %ProgramFiles%, сработает без RegExec?

Не понятно значение переменной %ProgramFilesDblSlash%...

fantik
16-11-2006, 15:24
Black Babay

Нет, не сработает, конечно.
Объяснять почему или не стоит?

Даже если бы сработало, то в рег-файле не происходит замены системных переменных на их значения, и ты получил бы ошибку уже в процессе работы с FastStone. Для правильной нормальной замены существует RegExec. Сейчас пытаюсь сделать нечто подобное в InnoSetup

Black Babay
16-11-2006, 15:38
ВопросЫ:
1. Добавка "DblSlash" в переменную превращает любую переменную в реальный путь типа "C:\Program Files"
2. Разьве в реестре не поддерживаются системные переменные?

Сейчас пытаюсь сделать нечто подобное в InnoSetup
InnoSetup должен сам обработать переменную {app} и преобразовать её в реальный путь.

Из Юзергада:
Константы папок.

{app}
Папка, куда устанавливается приложение. Она выбирается пользователем в окне Выбор папки назначения при установке.
Например: если Вы ввели {app}\MYPROG.EXE в значение параметра Source и пользователь пожелал установить Вашу программу в "C:\MYPROG", на выходе получится "C:\MYPROG\MYPROG.EXE".

fantik
16-11-2006, 15:50
Black Babay
1. Нет, нет и еще раз нет. Это моя переменная, которая заменяется экзешником на C:\\Program Files
Глянь в reg-файл, найди там %ProgramFilesDblSlash% и попробуй заменить. Слеши должны быть экранированы, однозначно.
2. Поддерживаются, конечно, но, к примеру, замени :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FastStone Image Viewer]
"UninstallString"="C:\\Program Files\\FastStone Image Viewer\\uninst.exe"
На
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FastStone Image Viewer]
"UninstallString"="%ProgramFiles%\\FastStone Image Viewer\\uninst.exe"
И попробуй сделать Uninstall

Black Babay
16-11-2006, 16:01
Код:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FastStone Image Viewer] "UninstallString"="%ProgramFiles%\\FastStone Image Viewer\\uninst.exe"


И попробуй сделать Uninstall

Говорит что произошла ошибка, файл возможно удален и предлагает удалить прогу из списка.

Если есть время и желание объясни поподробнее как пользоваться RegExec.exe и про эти "хитрые" переменные. Штука оказалась нужная, но пока как у мартышки с очками получается :(

fantik
16-11-2006, 16:11
Black Babay

Думаю, по коду поймешь :
#cs ----------------------------------------------------------------------------

AutoIt Version: 3.1.1.0
Author: fantik

Script Function:
Template AutoIt script.

#ce ----------------------------------------------------------------------------
#include <File.au3>
; Script Start - Add your code below here

if $CmdLine[0] = 0 Then
Run ( "regedit.exe" );
ElseIf $CmdLine[0] = 1 Then

$file = FileOpen ( $CmdLine[1], 0 );
if $file = -1 Then Exit ;
$text = FileRead ( $file );
FileClose ( $file ) ;

$text = StringReplace ( $text, "%ProgramFiles%", @ProgramFilesDir ) ;
$text = StringReplace ( $text, "%ProgramFilesDblSlash%", StringReplace (@ProgramFilesDir, '\', '\\') ) ;

$text = StringReplace ( $text, "%Windows%", @WindowsDir ) ;
$text = StringReplace ( $text, "%WindowsDblSlash%", StringReplace (@WindowsDir, '\', '\\') ) ;

$text = StringReplace ( $text, "%System%", @SystemDir ) ;
$text = StringReplace ( $text, "%SystemDblSlash%", StringReplace (@SystemDir, '\', '\\') ) ;

$text = StringReplace ( $text, "%SystemRoot%", @WindowsDir ) ;
$text = StringReplace ( $text, "%SystemRootDblSlash%", StringReplace (@WindowsDir, '\', '\\') ) ;

$temp = _TempFile(@TempDir, "reg_", ".reg") ;
$file = FileOpen ( $temp, 2 );
if $file = -1 Then
MsgBox ( 0, "Ошибка", "Чёртов файл $temp не может быть создан" ) ;
Exit ;
EndIf
FileWrite ( $file, $text );
FileClose ( $file ) ;

RunWait('regedit.exe /s "'&$temp&'"') ;

FileDelete ( $temp ) ;

EndIf

Нужная программа только в том случае, если не пользоваться InnoSetup. Так как в нём уже додумал скрипт, который делает то же самое, но красивее, так как в Inno есть много хорошо реализованных вещей. Тестирую.

Black Babay
16-11-2006, 16:18
fantik, спасибо за терпение! С AutoIt не знаком совсем, но по коду действительно почти всё понятно.

fantik
16-11-2006, 16:41
Так, в InnoSetup этот файл не нужен.

Но там есть другой баг, связанный с использованием импорта REG-файла в IsTool (http://www.istool.org). Связан он с различием синтаксисов Inno и Reg. Вручную правится, конечно, но если немного.

Издатель о баге извещён :)


Скоро будет готовый инсталлер на базе InnoSetup

EgOrus
16-11-2006, 21:17
fantik
поясни что именно криво импортится из .reg?

Black Babay
зачем нужны эти строчки:Source: embedded\WizardImage.bmp; DestDir: embedded
Source: embedded\WizardSmallImage.bmp; DestDir: embedded

Black Babay
16-11-2006, 21:24
Код:

Source: embedded\WizardImage.bmp; DestDir: embedded
Source: embedded\WizardSmallImage.bmp; DestDir: embedded



Подозреваю, что они не нужны, т.к прописаны в секции [Setup], но они были в паре первых "разобранных" мной, так и застряли... :) По крайней мере если их убрать, то в окне инсталлятора картинки отображаются. В папке назначения их нет, разве что в Uninstall они внедряются, но в диалоге удаления их нет.

EgOrus
16-11-2006, 22:39
Black Babay
совсем не нужны, в конструкции DestDir: embedded особого смысла нет

Black Babay
16-11-2006, 22:40
Провел эксперимент. Убрал эти строки из кода. Скомпилированный файл стал весить на 1kb меньше. Сами же картинки весят 160kb. Так, что предположение с внедрением отпало. Соответственно - строки из кода можно смело убирать.

fantik
17-11-2006, 04:03
EgOrus

Приведу письмо разработчику:
Думаю, что мой пьяный инглиш будет нормальный для понимания
От: Евгений Владимирович <fantforever@gmail.com> Отправлено с помощью: gmail.com
Кому: istool@istool.org
Дата: 16.11.2006 16:20
Тема: Hello, Bjørnar Henden
Ответить | Ответить всем | Переслать | Печать | Добавить отправителя в адресную книгу | Удалить это сообщение | Показать исходное сообщение | Текст сообщения искажен?
First of all, great thanks for your ISTool, it's most useful i've seen

I havу one trouble, with importing [registry] section from *.reg file.
Trouble in parsing double quotes and slashes.

In REG-file I have :

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\FSIV\command]
@="\"C:\\Program Files\\FastStone Image Viewer\\FSViewer.exe\" \"%1\""

It works great, result in registry is :
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\FSIV\command]
@="C:\Program Files\FastStone Image Viewer\FSViewer.exe" "%1"


But when I import this string, i get
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\FSIV\command]
"\""C:\Program Files\FastStone Image Viewer\FSViewer.exe\"" \""%1\"""

And in registry result is :
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\FSIV\command]
\"C:\Program Files\FastStone Image Viewer\FSViewer.exe\" \"%1\"


If you have some time, please, check this bug, Thanks.

Ryabov Eugene.




© OSzone.net 2001-2012