Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
valyok666
03-11-2011, 15:12
kindza811, никто тебе его не даст)делай сам)
там вроде рисованые картинки,ну остальное всё ботва)
Как принудительно кинуть установщик на страницу "Финиш"?
Так, что бы после этого скрипт завершил свою работу при любом варианте.
Можно как нибуть получить список файлов и папок в указанной папке?
З.Ы.
2 предыдущих вопроса все еще актуальны.
Gugle, когда именно надо кинуть установщик на финиш?
Sotonisto
04-11-2011, 18:08
Всем доброго времени суток! У меня есть скрипт (http://rghost.ru/28525441) с наложением изображения на кнопки. Как можно сделать, чтобы у кнопки "Обзор" было отдельное изображение (например, button2.bmp)? Видел несколько примеров, но одни не работают, а другие - заменяют текстуры на всех кнопках :(
Sotonisto, накладывать, а не налаживать. Это не от слова лажа, а от слова класть! :read:
Скачать переделанное. (http://rghost.ru/28549741)
Если надо, то текст убери с кнопки "Обзор..." коммандой:
[Messages]
rus.ButtonWizardBrowse=
[hr]
Всё для Вас. :)
Sotonisto
05-11-2011, 03:37
Rikill, спасибо :)
накладывать, а не налаживать. Это не от слова лажа, а от слова класть! »
Прошу прощения. У меня в школе не преподавали русский язык (за исключением уроков русской литературы) и на работе почти вся документация на украинском :(
Но впредь буду более внимательным.
VASYAKRN
05-11-2011, 11:58
у кого имеются Ukrainian.isl
insombia
05-11-2011, 19:02
VASYAKRN у меня
VASYAKRN
05-11-2011, 19:12
insombia, У меня уже есть
спасиба
Есть небольшое приложение, и созданый под него инсталятор. Должно все устанавливаться в IIS7. Раньше работала с IIS6, проблем не возникало а теперь пишет вот это
C:\DOCUME~1\9335~1\LOCALS~1\Temp\2\is-GJ8K0.tmp>powershell -command "Set-Executi onPolicy RemoteSigned -Scope CurrentUser"
C:\DOCUME~1\9335~1\LOCALS~1\Temp\2\is-GJ8K0.tmp>powershell -File "C:\DOCUME~1\93 35~1\LOCALS~1\Temp\2\is-GJ8K0.tmp/IIS7_0_6_0.ps1"
Начата регистрация ASP.NET (4.0.30319) в W3SVC/.
Завершена регистрация ASP.NET (4.0.30319) в W3SVC/.
Нельзя вызвать метод для выражения со значением NULL.
C:\Documents and Settings\Администратор\Local Settings\Temp\2\is-GJ8K0.tmp\IIS7 _0_6_0.ps1:11 знак:30
+ $id = $webServer.Path.Replace <<<< ("IIS://localhost/W3SVC/", "")
+ CategoryInfo : InvalidOperation: (Replace:String) [], RuntimeEx ception
+ FullyQualifiedErrorId : InvokeMethodOnNull
Сервер сценариев Windows (Microsoft R) версия 5.6 c
Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
ErrNumber: -2147463168 (0x80005000)
Error Trying To Get the Object: W3SVC/
Сервер сценариев Windows (Microsoft R) версия 5.6 c
Корпорация Майкрософт (Microsoft Corp.), 1996-2001.
Все права защищены.
ErrNumber: -2147463168 (0x80005000)
Error Trying To Get the Object: W3SVC//root
Сервер сценариев Windows (Microsoft R) версия 5.6 c
Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
ErrNumber: -2147463168 (0x80005000)
Error Trying To Get the Object: W3SVC//root
Сервер сценариев Windows (Microsoft R) версия 5.6 c
Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
ErrNumber: -2147463168 (0x80005000)
Error Trying To Get the Object: W3SVC//root
Сервер сценариев Windows (Microsoft R) версия 5.6 c
Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
ErrNumber: -2147463168 (0x80005000)
Error Trying To Get the Object: W3SVC//root
Произошла ошибка при вызове метода, так как [System.Object[]] не содержит метод с именем "Start".
C:\Documents and Settings\Администратор\Local Settings\Temp\2\is-GJ8K0.tmp\IIS7 _0_6_0.ps1:17 знак:17
+ $webServer.Start <<<< ()
+ CategoryInfo : InvalidOperation: (Start:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
C:\DOCUME~1\9335~1\LOCALS~1\Temp\2\is-GJ8K0.tmp>powershell -command "Set-Executi onPolicy Restricted -Scope CurrentUser"
C:\DOCUME~1\9335~1\LOCALS~1\Temp\2\is-GJ8K0.tmp>powershell -command "exit"
C:\DOCUME~1\9335~1\LOCALS~1\Temp\2\is-GJ8K0.tmp>sqlcmd -s CSU-DEVELOPER 1>
Все ошибки гуглила, не особо помогает. Может быть кто сталкивался?
Если что скрипт вшитый в установочник:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -sn W3SVC/
$newWebSiteName = "PhoneDict"
$newWebSitePath = "C:\inetpub\wwwroot\PhoneDict"
$iisWebService = Get-WmiObject -namespace "root\MicrosoftIISv2" -class "IIsWebService"
$bindingClass = [wmiclass]'root\MicrosoftIISv2:ServerBinding'
$bindings = $bindingClass.CreateInstance()
$bindings.Port = "80"
$result = $iisWebService.CreateNewSite($newWebSiteName, $bindings, $newWebSitePath)
$iis = [ADSI]"IIS://localhost/W3SVC"
$webServer = $iis.psbase.children | where { $_.keyType -eq "IIsWebServer" -AND $_.ServerComment -eq $newWebSiteName}
$id = $webServer.Path.Replace("IIS://localhost/W3SVC/", "")
cscript "C:\inetpub\AdminScripts\adsutil.vbs" set W3SVC/$id/DefaultDoc "main.aspx"
cscript "C:\inetpub\AdminScripts\adsutil.vbs" set W3SVC/$id/root/accessRead "true"
cscript "C:\inetpub\AdminScripts\adsutil.vbs" set W3SVC/$id/root/accessScript "true"
$webServer.Start()
exit
valyok666
05-11-2011, 20:22
VASYAKRN, извините за мой русский
VASYAKRN
05-11-2011, 21:08
valyok666, Спасиба
serg aka lain
06-11-2011, 05:48
Инсталлятор может после установки сам себя скопировать? »
FileCopy(ExpandConstant('{srcexe}'), 'C:\Test\test.exe', False);
#define AppName "My Program";
[Setup]
AppName={#AppName}
AppVerName={#AppName}
DefaultDirName={pf}\{#AppName}
DefaultGroupName={#AppName}
AllowNoIcons=True
OutputDir=userdocs:InnoSetupTest.
[Code]
procedure MyFileCopy();
var
s1, s2: string;
ResultCode: Integer;
begin
s1:= ExpandConstant('{sd}\MyFileCopy.cmd');
s2 := 'copy ' + AddQuotes(ExpandConstant('{srcexe}'))
+ ' ' + AddQuotes(AddBackSlash(ExpandConstant('{sd}')) + 'Test\test.exe') + #10#13 +
+ 'del ' + s1;
SaveStringToFile(s1, s2, False);
if not DirExists(ExpandConstant('{sd}\Test')) then
CreateDir(ExpandConstant('{sd}\Test'));
Exec(s1, '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
MyFileCopy();
end;
З.Ы.С кириллицей в пути не сработает.
Sotonisto
06-11-2011, 20:12
1. Как осуществить разбивку .arc архива на диски (игра, сжатая FreeArc'ом весит ~9.5Gb)?
Хотелось бы разместить, например, 2 архива на 2 DVD и чтобы после окончания распаковки 1 архива, выводилось сообщение "Вставьте диск 2" и т.п.
Нашел такой пример, но не особо понял что делать (у меня требует 2й диск даже не начав установку).
if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc' ) then break;
2. Для чего нужен файл records.inf (он у меня создается после установки)? Из-за него я не могу установить игру (если файлы инсталла находятся в образе).
После окончания распаковки афхива инсталл просто закрывается (нет ни финишной страницы, ни инсталляции доп. по) :(
Gnom_aka_Lexander
06-11-2011, 20:25
З.Ы.С кириллицей в пути не сработает. »
Продолжим тему :) Вот так, работает и с кирилицей:
#define AppName "My Program";
[Setup]
AppName={#AppName}
AppVerName={#AppName}
DefaultDirName={pf}\{#AppName}
DefaultGroupName={#AppName}
AllowNoIcons=True
OutputDir=userdocs:InnoSetupTest.
[*code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
function CopyFile(ExistingFile,NewFile: PAnsiChar;bFailIfExists: Boolean): Boolean;
external 'CopyFile{#A}@Kernel32.dll stdcall';
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
CreateDir(ExpandConstant('{sd}\тест'));\\ папку нужно создать зарание.
CopyFile(ExpandConstant('{srcexe}'),ExpandConstant('{sd}\тест\test.exe'),True);
end;
Alim13, :o
Sotonisto, для чего нужен records.inf посмотри в справке к ISDone.
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\1 архив.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\2 архив.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'3 архив на 2 диске.arc') then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\4 на диске.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\5 на диске.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
Ну или эксперементируй :) .
serg aka lain
06-11-2011, 22:27
Продолжим тему Вот так, работает и с кирилицей »
Ценная таки мысль, только в твоём примере будет работать только в ANSI, в Unicode не сработает, так как функция CopyFile
в юникоде выглядит так:
function CopyFile(ExistingFile,NewFile: String; bFailIfExists: Boolean): Boolean;
external 'CopyFileW@Kernel32.dll stdcall';
#ifdef UNICODE
#define PChar = "String"
#define A = "W"
#else
#define PChar = "PChar"
#define A = "A"
#endif
function CopyFile(ExistingFile,NewFile: {#PChar}; bFailIfExists: Boolean): Boolean;
external 'CopyFile{#A}@Kernel32.dll stdcall';
Gnom_aka_Lexander
06-11-2011, 22:32
serg aka lain, Внимательней посмотри мой пример.
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif »external 'CopyFile{#A}@Kernel32.dll stdcall'; » Про то, что инно не перенаправляет это дело автоматом, уже научен неприятным опытом :)
serg aka lain
06-11-2011, 22:43
Внимательней посмотри мой пример »
Я имел в виду этот момент
function CopyFile(ExistingFile,NewFile: String; bFailIfExists: Boolean): Boolean;
external 'CopyFileW@Kernel32.dll stdcall';
Sotonisto
07-11-2011, 00:05
Rikill, спасибо :) Немного изменил твой пример и все получилось ^^
Но появилась другая проблема: прогресс-бар доходит до конца еще во время распаковки 1-го архива :( + у меня прогресс показан %, так вот, после распаковки 3х архивов отображается 300% :(
Как это исправить? Вот скрипт (http://rghost.ru/28851251) инсталла.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.