ComradG
ЛС либо аська. Помощь очень нужна
Я по-моему сказал "Как для блондинки"
ЛС либо аська. Помощь очень нужна
Я по-моему сказал "Как для блондинки"
в исходниках самой dll-ки SkinCrafter'а есть, если так мона выразиться, брешь, которая переписывается полностью под Inno-- ошибаешься. Для работоспособности SkinCrafter под инно, нет необходимости вносить изменения в код длл-ки. Можно конечно и под себя переписать. Но не думаю, что в данном случае это оправдано.
Теперича догнал?-- думаю нет. Мне не совсем понятно, откуда на компьютере пользователя возьмется эта длл, если кроме в секции [Files] будет только сам скин? А длл? И почему "Скин будет инсталлица" ?? Насколько я понимаю, скин нужен только для "разукрашивания" самого инсталлятора (т.е. только в процессе инсталляции/деинсталляции). И почему такие жесткие пути X:\Document and Settings\(имя админа)... и X:\Windows\Temp ?? А если таких папок нет? А если папки есть, но доступа туда нет?
поключаемый модуль к inno-- тогда напрасно прибедняешься. Это уже не "малость dll-ку подправил", а целый плагин. Отсюда и непонятки. Выражал бы свои мысли яснее, меньше офтопа было бы. Вопросов больше не имею.
Corona Skin уже порядком поднадоела, неужели нече нового?
Victor_Dobrov - одна работа это еще не повод для того, чтобы делать из себя V.I.P. Разрабатывай ужо новое!
-СoronaSkin -уже -задрала. -Ведь -для -ее -компиляции -препроцессор -нужен... препроцессором -пользоваться -влом, -уж -больно -он -глючный.
Хелп народ. Вот [more=код][Setup]
AppName=BrowseFile
AppVerName=BrowseFile
DefaultDirName=BrowseFile
DisableStartupPrompt=true
Uninstallable=false
Compression=bzip
CreateAppDir=false
DisableProgramGroupPage=true
[Tasks]
Name: askini; Description: Choose a custom INI file; GroupDescription: Configuration:
[Code]
type
TOpenFileName = record
lStructSize: Longint;
hwndOwner: Longint;
hInstance: Longint;
lpstrFilter: PChar;
lpstrCustomFilter: PChar;
nMaxCustFilter: Longint;
nFilterIndex: Longint;
lpstrFile: PChar;
nMaxFile: Longint;
lpstrFileTitle: PChar;
nMaxFileTitle: Longint;
lpstrInitialDir: PChar;
lpstrTitle: PChar;
Flags: Longint;
nFileOffset: Word;
nFileExtension: Word;
lpstrDefExt: PChar;
lCustData: Longint;
lpfnHook: Longint;
lpTemplateName: PChar;
end;
function GetOpenFileName(var lpofn: TOpenFileName): Boolean; external
'GetOpenFileNameA@comdlg32.dll';
Const OFN_HIDEREADONLY = $4;
function NextButtonClick(CurPage: Integer): Boolean;
var
F: TOpenFileName;
S: String; z : char;
hwnd: Longint;
begin
// by default go to next page
Result := true;
z := Chr(0);
hwnd := StrToInt(ExpandConstant('{wizardhwnd}'));
// if curpage is wpSelectTasks
if CurPage = wpSelectTasks then
begin
if ShouldProcessEntry( '','askini') = srYes then
begin
// set defailt file
S := 'config.ini';
// get enough space
SetLength(S, 512);
// set wizard HWND as owner
F.hwndOwner := hwnd;
// set structure size
F.lStructSize := 76;
// set S buffer for filename
F.lpstrFile := S;
F.nMaxFile := Length(S);
// set dialog title
F.lpstrTitle := 'Choose configuration file';
// set filters
F.lpstrFilter := 'INI files (*.ini)' + z + '*.ini' + z +
'All files (*.*)' + z + '*.*' + z + z ;
// set flags
F.Flags := OFN_HIDEREADONLY;
// set initial dir as system
F.lpstrInitialDir := ExpandConstant('{sys}');
if GetOpenFileName(F) then begin
MsgBox( 'File choosed:'+ #13 + #13 + S, 0, 0);
Result := true;
end
else
Result := false;
end;
end;
end;[/more] из учебника, а вот мой [more=код][Setup]
AppName=My Program
AppVerName=My Program v.1.2
DirExistsWarning=no
DefaultDirName=C:\innosetup\output\2
DisableStartupPrompt=true
Compression=bzip
Uninstallable=false
DisableProgramGroupPage=true
OutputBaseFilename=setup
[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: {app}
[Tasks]
Name: askini; Description: Укажите расположение ключа; GroupDescription: Configuration:
[Code]
type
TOpenFileName = record
lStructSize: Longint;
hwndOwner: Longint;
hInstance: Longint;
lpstrFilter: PChar;
lpstrCustomFilter: PChar;
nMaxCustFilter: Longint;
nFilterIndex: Longint;
lpstrFile: PChar;
nMaxFile: Longint;
lpstrFileTitle: PChar;
nMaxFileTitle: Longint;
lpstrInitialDir: PChar;
lpstrTitle: PChar;
Flags: Longint;
nFileOffset: Word;
nFileExtension: Word;
lpstrDefExt: PChar;
lCustData: Longint;
lpfnHook: Longint;
lpTemplateName: PChar;
end;
function GetOpenFileName(var lpofn: TOpenFileName): Boolean; external
'GetOpenFileNameA@comdlg32.dll';
Const OFN_HIDEREADONLY = $4;
function NextButtonClick(CurPage: Integer): Boolean;
var
str: string;
F: TOpenFileName;
S: String; z : char;
hwnd: Longint;
begin
// by default go to next page
Result := true;
z := Chr(0);
hwnd := StrToInt(ExpandConstant('{wizardhwnd}'));
// if curpage is wpSelectTasks
if CurPage = wpSelectTasks then
begin
// set defailt file
S := 'key.reg';
// get enough space
SetLength(S, 512);
// set wizard HWND as owner
F.hwndOwner := hwnd;
// set structure size
F.lStructSize := 76;
// set S buffer for filename
F.lpstrFile := S;
F.nMaxFile := Length(S);
// set dialog title
F.lpstrTitle := 'Укажите расположение ключа';
// set filters
F.lpstrFilter := 'Ключ';
// set flags
F.Flags := OFN_HIDEREADONLY;
// set initial dir as system
F.lpstrInitialDir := ExpandConstant('{app}');
if GetOpenFileName(F) then else
Result := false;
end;
end;[/more] и все бы хорошо но в данном скрипте есть ошибочка, даже при снятой галочке, при нажатии на кнупочку "Далее" всеравно выпрыгивает окошко выбора, как бы это пофиксить?... То есть что бы при снятой галочке просто продолжалась обычная установка и эта менюшка игнорилась. На строчку "if ShouldProcessEntry( '','askini') = srYes then" в оригинальном скрипте ругается. И как указать что бы оно выбранный ключ сразу же КОПИРОВАЛО в папку допустим C:\123, то есть что бы непредлагало куда мне его кинуть во время инстала, а сразу ложило в дефолтную папку...
А посмотреть хелп влом?
А помочь человеку влом?-- "Гражданин судья, а он не может!" ((С)Кавказская пленница)
нужно в слове TeztMode заменить одну букву-- не обязательно. Если речь идет об ини-файле, достаточно добавить правильный ключ (либо в секции [INI], либо через функцию SetIniBool в коде). В принципе этого достаточно (лишний ключ TeztMode на работоспособность не влияет). Но если хочешь совсем красиво, ключ TeztMode можно удалить функцией DeleteIniEntry.
зачем писать [_Code]--
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
Предыдущая тема: Презентация