Показать полную графическую версию : FastStone Image Viewer
Страниц :
1
[
2]
3
4
5
6
7
8
9
10
11
12
fantik
это все дело вкуса, перепаковка в инстоляр по времени затраченному на пересборку новой версии от твоего варианта не отличается, нужно нажать лишь одну кнопку:
Плюсы же хоть и мелкие но есть:
1. Ярлыки и "коректный" деинстол, прописывается в реестре и в меню установка удаление программ.
2. Вариантность установки, можно сделать как портабл установку через ключи установки так и обычную, установить ярлыки только туда, куда нужно или не устанавливать совсем, установить ассоциации и т.п.
3. Чисто эстетически мне приятней знать что софтина у меня ставится не через батник, а нормальным установщиком :-)
EgOrus
Ну что ж, согласен со всем, кроме пункта "корректный анинстал", потому как в моём (даже пусть и батнике), он родной, роднее некуда.
Ну, соответственно, скрипт в студию, сделаю пару улучшений, могу скинуть сорс тебе, сделаешь экзешничек :)
Ну, соответственно, скрипт в студию, сделаю пару улучшений, могу скинуть сорс тебе, сделаешь экзешничек
перепаковкой я заниматья не буду, пока нет времени, возможно позже сделаю
Надеюсь я ответил на вопрос зачем нужна перепаковка.
Доделывай свой вариант тоже прикреплю к шапке.
Black Babay
16-11-2006, 11:01
Конструктор для сборки FastStone 2.8, сделанный на основе сборки уважаемого fantik.
Что хотелось бы доработать: сейчас все настройки реестра вносятся через reg-файл, запускаемый из батника в конце установки. Процесс запуска скрыт от пользователя. После установки reg-файл, батник и RegExec.exe автоматически удаляются. По хорошему, файловые ассоциации и прочее надо внести в сам скрипт, и избавится от этих трех файлов. Сам со скриптами только начал знакомится, поэтому пока не осилил.
Конструктор (http://www.slil.ru/23413808)
Исправленная ссылка на конструктор (http://www.slil.ru/23413808)
На самом деле RegExec - файл, который при обычном запуске запускает regedit, а при передаче файла в качестве аргумента - заменяет в нём %programfiles% на актуальный путь програм файлс, так же как и %system% и т.п. переменные, и после этого тихонько импортирует новый исправленный reg-файл в реестр
Black Babay
16-11-2006, 14:55
Я сначала, пробовал без него, но тогда если в контекстном меню выбрать "Просмотр в Fast Stone..." вылетала ошибка, что "Нет прав для просмотра ресурса", а с ним все нормально, причем рег-файл был один и тотже.
ЗЫ. Ссылку поправил.
ЗЫ. ЗЫ. А темы к нему можно где-то найти? Темненькой не хватает...
Black Babay
Насчет тем не знаю.
Естественно, RegExec не правит файл, создает новый, выполняет и сразу удаляет. Но при этом заменяет все %ProgramFilesDblSlash% на "C:\\Program Files", иначе импорт в реестр корявый получится, и ошибка поэтому и выскакивает
Black Babay
16-11-2006, 15:20
То-есть если в том регфайле исправить все %ProgramFilesDblSlash% на все %ProgramFiles%, сработает без RegExec?
Не понятно значение переменной %ProgramFilesDblSlash%...
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".
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 и про эти "хитрые" переменные. Штука оказалась нужная, но пока как у мартышки с очками получается :(
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 не знаком совсем, но по коду действительно почти всё понятно.
Так, в InnoSetup этот файл не нужен.
Но там есть другой баг, связанный с использованием импорта REG-файла в IsTool (http://www.istool.org). Связан он с различием синтаксисов Inno и Reg. Вручную правится, конечно, но если немного.
Издатель о баге извещён :)
Скоро будет готовый инсталлер на базе InnoSetup
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 они внедряются, но в диалоге удаления их нет.
Black Babay
совсем не нужны, в конструкции DestDir: embedded особого смысла нет
Black Babay
16-11-2006, 22:40
Провел эксперимент. Убрал эти строки из кода. Скомпилированный файл стал весить на 1kb меньше. Сами же картинки весят 160kb. Так, что предположение с внедрением отпало. Соответственно - строки из кода можно смело убирать.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.