.: NSIS - все вопросы :. часть 2.

Ответить
 • Просмотры: 37
Аватара пользователя
K.A.V.

Re: .: NSIS - все вопросы :. часть 2.

Сообщение K.A.V. »

Ещё раз об изменении/установки временных атрибутов файлов. Т.к. с чистым API не всё ясно, то при использовании плагина

http://nsis.sourceforge.net/Time_plug-in


всё предельно просто :



Код:

Код: Выделить всё

!include "Time.nsh"
OutFile "File_time_set_test.exe"
Section
; это для контроля :
${time::GetFileTime} "$EXEDIR\MyFile.exe" $0 $1 $2
MessageBox MB_OK 'Определяем дату GetFileTime$\n$$0={$0}$\n$$1={$1}$\n$$2={$2}'
MessageBox MB_OK 'Установим новую дату : $\nФайл Создан 01.10.2014 01:30:40$\nИзменён 02.11.2013 21:31:41$\nОткрыт 03.12.2012 22:32:49'
${time::SetFileTime} "$EXEDIR\MyFile.exe" "01.10.2014 01:30:40" "02.11.2013 21:31:41" "03.12.2012 22:32:49" $R0
SectionEnd
Аватара пользователя
MaGoth

Re: .: NSIS - все вопросы :. часть 2.

Сообщение MaGoth »

Здравствуйте. Я новичок. Нарисовал свою страницу в NSIS Form Designer, форма сохранилась в двух файлах. Как теперь показать её?
Аватара пользователя
TretyakRoman

Re: .: NSIS - все вопросы :. часть 2.

Сообщение TretyakRoman »

Цитата Mr.Evgen:



NSIS Form Designer
.: NSIS - все вопросы :. часть 2.




Совсем старенькая программка, как я понял - она помогает создавать INI файлы с параметрами страницы и элементов для использования с плагином InstallOptions




Цитата Mr.Evgen:



Я новичок
.: NSIS - все вопросы :. часть 2.




Справочнике по NSIS
читали?

Вам сначала нужно выбрать, каким способом вы хотите создавать странички, в NSIS есть 2 разных плагина для этих целей.

1. Старый способ. InstallOptionsEx - чтобы создать страничку с использованием данного плагина вам необходимо сначала создать INI файл с параметрами странички и необходимыми элементами (что и делает ваша старенькая программка)



2. Новый способ. nsDialogs. Чтобы создать страничку с использованием данного плагина вам необходимо прописать команды на создание каждого элемента управления (текст, галочка и т.д.) в коде скрипта. В этом вам поможет
NSIS Dialog Designer - NSIS




В справочнике есть примеры:

Обучение IO: собственные странички

Описания плагинов => nsDialogs: Создаем собственные страницы инсталлятора
Аватара пользователя
Begin2Fly

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Begin2Fly »

TretyakRoman, скорее всего у вас всё переадресуется в Software\WoW6432Node. Перед командами записи в реестр напишите такое: SetRegView 64
Аватара пользователя
TretyakRoman

Re: .: NSIS - все вопросы :. часть 2.

Сообщение TretyakRoman »

Друзья, может всё-таки кто-то знает почему данный код может не работать?



Вот сам программа



.: NSIS - все вопросы :. часть 2.




В логе компилятора смущают строки:



Код:

Код: Выделить всё

LangString: "WELCOMEPAGE_TITLE" 1049 "ДОБР*Рћ ПОЖАЛОВАТЬ!"
LangString: "WELCOMEPAGE_TITLE" 1033 "WELCOME!"
LangString: "WELCOMEPAGE_TEXT" 1049 "Р*то пример показывает как поместить СЃРІРѕР№ текст описания РІ зависимости РѕС‚ выбранного языка инсталлятора!

Весь лог компилятора такой:



Код:

Код: Выделить всё

MakeNSIS v2.46 - Copyright 1995-2009 Contributors
See the file COPYING for license details.
Credits can be found in the Users Manual.
Processing config: 
Processing plugin dlls: "C:\Program Files (x86)\NSIS\Plugins\*.dll"
 - AdvSplash::show
 - Banner::destroy
 - Banner::getWindow
 - Banner::show
 - BgImage::AddImage
 - BgImage::AddText
 - BgImage::Clear
 - BgImage::Destroy
 - BgImage::Redraw
 - BgImage::SetBg
 - BgImage::SetReturn
 - BgImage::Sound
 - Dialer::AttemptConnect
 - Dialer::AutodialHangup
 - Dialer::AutodialOnline
 - Dialer::AutodialUnattended
 - Dialer::GetConnectedState
 - Dialogs::Author
 - Dialogs::Folder
 - Dialogs::InputBox
 - Dialogs::InputRegCode
 - Dialogs::Open
 - Dialogs::Save
 - Dialogs::Ver
 - InetLoad::load
 - InstallOptions::dialog
 - InstallOptions::initDialog
 - InstallOptions::show
 - LangDLL::LangDialog
 - Math::Script
 - NSISArray::ArrayCount
 - NSISArray::ArrayExists
 - NSISArray::Clear
 - NSISArray::Concat
 - NSISArray::Copy
 - NSISArray::Cut
 - NSISArray::Debug
 - NSISArray::Delete
 - NSISArray::ErrorStyle
 - NSISArray::Exists
 - NSISArray::ExistsI
 - NSISArray::FreeUnusedMem
 - NSISArray::Join
 - NSISArray::New
 - NSISArray::Pop
 - NSISArray::Push
 - NSISArray::Put
 - NSISArray::ReDim
 - NSISArray::Read
 - NSISArray::ReadToStack
 - NSISArray::Reverse
 - NSISArray::Search
 - NSISArray::SearchI
 - NSISArray::SetAutoReDim
 - NSISArray::SetSize
 - NSISArray::Shift
 - NSISArray::SizeOf
 - NSISArray::Sort
 - NSISArray::Splice
 - NSISArray::Subtract
 - NSISArray::Swap
 - NSISArray::Unshift
 - NSISArray::Write
 - NSISArray::WriteList
 - NSISArray::WriteListC
 - NSISList::Add
 - NSISList::All
 - NSISList::AllRev
 - NSISList::Append
 - NSISList::Clear
 - NSISList::Concat
 - NSISList::Copy
 - NSISList::Count
 - NSISList::Create
 - NSISList::Debug
 - NSISList::Delete
 - NSISList::Destroy
 - NSISList::Dim
 - NSISList::Exch
 - NSISList::First
 - NSISList::Get
 - NSISList::Index
 - NSISList::Insert
 - NSISList::Last
 - NSISList::Load
 - NSISList::Move
 - NSISList::Pop
 - NSISList::Reverse
 - NSISList::Save
 - NSISList::Set
 - NSISList::Sort
 - NSISList::Unload
 - NSISdl::download
 - NSISdl::download_quiet
 - Splash::show
 - StartMenu::Init
 - StartMenu::Select
 - StartMenu::Show
 - System::Alloc
 - System::Call
 - System::Copy
 - System::Free
 - System::Get
 - System::Int64Op
 - System::Store
 - TypeLib::GetLibVersion
 - TypeLib::Register
 - TypeLib::UnRegister
 - UserInfo::GetAccountType
 - UserInfo::GetName
 - UserInfo::GetOriginalAccountType
 - VPatch::GetFileCRC32
 - VPatch::GetFileMD5
 - VPatch::vpatchfile
 - ZipDLL::extractall
 - ZipDLL::extractfile
 - dialogsEx::FileBox
 - dialogsEx::FolderBox
 - dialogsEx::InputBox
 - dialogsEx::InputRegBox
 - inetc::get
 - inetc::head
 - inetc::post
 - inetc::put
 - nsArray::Clear
 - nsArray::Get
 - nsArray::Iterate
 - nsArray::Join
 - nsArray::Length
 - nsArray::Remove
 - nsArray::RemoveList
 - nsArray::Set
 - nsArray::SetList
 - nsArray::Sort
 - nsArray::Split
 - nsDialogs::Create
 - nsDialogs::CreateControl
 - nsDialogs::CreateItem
 - nsDialogs::CreateTimer
 - nsDialogs::GetUserData
 - nsDialogs::KillTimer
 - nsDialogs::OnBack
 - nsDialogs::OnChange
 - nsDialogs::OnClick
 - nsDialogs::OnNotify
 - nsDialogs::SelectFileDialog
 - nsDialogs::SelectFolderDialog
 - nsDialogs::SetRTL
 - nsDialogs::SetUserData
 - nsDialogs::Show
 - nsExec::Exec
 - nsExec::ExecToLog
 - nsExec::ExecToStack
 - nsResize::Add
 - nsResize::GetPos
 - nsResize::GetPosPx
 - nsResize::GetSize
 - nsResize::GetSizePx
 - nsResize::Set
 - nsResize::SetRTL
 - nsResize::Top
!define: "MUI_INSERT_NSISCONF"=""
Changing directory to: "D:\Desktop"
Processing script file: "D:\Desktop\testtest678.nsi"
!include: "C:\Program Files (x86)\NSIS\Include\MUI2.nsh"
!include: "C:\Program Files (x86)\NSIS\Contrib\Modern UI 2\MUI2.nsh"
NSIS Modern User Interface version 2.0 - Copyright 2002-2009 Joost Verburg (C:\Program Files (x86)\NSIS\Contrib\Modern UI 2\MUI2.nsh:8)
!define: "MUI_INCLUDED"=""
!define: "MUI_SYSVERSION"="2.0"
!define: "MUI_VERBOSE"="3"
!include: closed: "C:\Program Files (x86)\NSIS\Contrib\Modern UI 2\MUI2.nsh"
!include: closed: "C:\Program Files (x86)\NSIS\Include\MUI2.nsh"
Caption: "MultiLanguage Modern UI Test"
Name: "MultiLanguage Test"
OutFile: "Test MultiLanguage.exe"
!define: "MUI_LANGDLL_ALLLANGUAGES"=""
!define: "MUI_WELCOMEPAGE_TITLE"="$(WELCOMEPAGE_TITLE)"
!define: "MUI_WELCOMEPAGE_TEXT"="$(WELCOMEPAGE_TEXT)"
!define: "MUI_FINISHPAGE_TITLE"="$(FINISHPAGE_TITLE)"
!define: "MUI_FINISHPAGE_TEXT"="$(FINISHPAGE_TEXT)"
!define: "MUI_COMPONENTSPAGE_SMALLDESC"=""
!insertmacro: MUI_PAGE_WELCOME
!insertmacro: end of MUI_PAGE_WELCOME
!insertmacro: MUI_PAGE_COMPONENTS
!insertmacro: end of MUI_PAGE_COMPONENTS
!insertmacro: MUI_PAGE_INSTFILES
!insertmacro: end of MUI_PAGE_INSTFILES
!insertmacro: MUI_PAGE_FINISH
!insertmacro: end of MUI_PAGE_FINISH
!insertmacro: MUI_LANGUAGE
!insertmacro: end of MUI_LANGUAGE
!insertmacro: MUI_LANGUAGE
!insertmacro: end of MUI_LANGUAGE
!insertmacro: MUI_RESERVEFILE_LANGDLL
!insertmacro: end of MUI_RESERVEFILE_LANGDLL
Function: ".onInit"
!insertmacro: MUI_LANGDLL_DISPLAY
!insertmacro: end of MUI_LANGDLL_DISPLAY
FunctionEnd
Section: "$(NAME_SECTION)" ->(SecDummy)
MessageBox: 64: "$(Text_MessageBox)"
SectionEnd
LangString: "WELCOMEPAGE_TITLE" 1049 "ДОБР*Рћ ПОЖАЛОВАТЬ!"
LangString: "WELCOMEPAGE_TITLE" 1033 "WELCOME!"
LangString: "WELCOMEPAGE_TEXT" 1049 "Р*то пример показывает как поместить СЃРІРѕР№ текст описания РІ зависимости РѕС‚ выбранного языка инсталлятора!
$_CLICK"
LangString: "WELCOMEPAGE_TEXT" 1033 "This example shows how to put your text descriptions, depending on the selected language installer!
$_CLICK"
LangString: "FINISHPAGE_TITLE" 1049 "Р*РўРћ РЎРўР*РђРќР˜Р¦Рђ Р—РђР’Р•Р*РЁР•РќР˜РЇ!"
LangString: "FINISHPAGE_TITLE" 1033 "COMPLETION OF THIS PAGE!"
LangString: "FINISHPAGE_TEXT" 1049 "Теперь вы знаете как поместить свой текст описания в зависимости от выбранного языка установщика!
Нажмите кнопку "Готово" для выхода из программы установки."
LangString: "FINISHPAGE_TEXT" 1033 "Now you know how to put your descriptive text depending on the language of the installer!
Click Finish to close this wizard."
LangString: "TEXT_MESSAGEBOX" 1049 "Выбран Р*СѓСЃСЃРєРёР№ язык установщика!
 ID языка: $LANGUAGE"
LangString: "TEXT_MESSAGEBOX" 1033 "The English language installer!
 ID language: $LANGUAGE"
LangString: "SECTION" 1049 "Р*СѓСЃСЃРєРѕРµ описание секции"
LangString: "SECTION" 1033 "The English description of section"
LangString: "NAME_SECTION" 1049 "Р*то СЂСѓСЃСЃРєРѕРµ название секции"
LangString: "NAME_SECTION" 1033 "This is the english name of the section"
!insertmacro: MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro: end of MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro: MUI_DESCRIPTION_TEXT
!insertmacro: end of MUI_DESCRIPTION_TEXT
!insertmacro: MUI_FUNCTION_DESCRIPTION_END
!insertmacro: end of MUI_FUNCTION_DESCRIPTION_END
Processed 1 file, writing output:
Adding plug-ins initializing function... Done!
Processing pages... Done!
Removing unused resources... Done!
Generating language tables... Done!
Output: "D:\Desktop\Test MultiLanguage.exe"
Install: 5 pages (320 bytes), 1 section (1048 bytes), 437 instructions (12236 bytes), 228 strings (4882 bytes), 2 language tables (636 bytes).
Datablock optimizer saved 23884 bytes (~27.0%).
Using zlib compression.
EXE header size:               49664 / 35840 bytes
Install code:                   4522 / 19498 bytes
Install data:                  14812 / 125732 bytes
CRC (0x1B4C6D77):                  4 / 4 bytes
Total size:                    69002 / 181074 bytes (38.1%)
Аватара пользователя
TretyakRoman

Re: .: NSIS - все вопросы :. часть 2.

Сообщение TretyakRoman »

Цитата alexfinik:



почему данный код может не работать?
.: NSIS - все вопросы :. часть 2.




Почему может не работать - не знаю, потому что код работает. (NSIS 3.02)

А лог компилятора такой:





Код:

Код: Выделить всё

Command line: 
"C:\Program Files (x86)\NSIS\makensis.exe"   "C:\Users\Vadim\Desktop\new_dialog\02.nsi"
Processing config: C:\Program Files (x86)\NSIS\nsisconf.nsh
Processing script file: "C:\Users\Vadim\Desktop\new_dialog\02.nsi" (ACP)
Processed 1 file, writing output (x86-ansi):
Output: "C:\Users\Vadim\Desktop\new_dialog\Test MultiLanguage.exe"
Install: 4 pages (256 bytes), 1 section (16408 bytes), 431 instructions (12068 bytes), 1 string (7143 bytes), 2 language tables (636 bytes).
Datablock optimizer saved 4112 bytes (~5.9%).
Using zlib compression.
EXE header size:               49664 / 35840 bytes
Install code:                   5251 / 28759 bytes
Install data:                  15028 / 84244 bytes
CRC (0x5DF849B3):                  4 / 4 bytes
Total size:                    69947 / 148847 bytes (46.9%)
Аватара пользователя
navab

Re: .: NSIS - все вопросы :. часть 2.

Сообщение navab »

Цитата alexfinik:



почему данный код может не работать?
.: NSIS - все вопросы :. часть 2.




Скомпилировал в NSIS Unicode - вместо русского языка кракозябры, а вот в ANSI все отлично!
Аватара пользователя
K.A.V.

Re: .: NSIS - все вопросы :. часть 2.

Сообщение K.A.V. »

Исходные данные:

TXT файл с одной числовой строкой.



Задача:

Проверить есть ли запись в этом тестовом файле, если нет, то крутится в цикле ожидая появления.



Решение:

Вот собственно с решением трудновато, сталкивался кто нибудь из форумчан, с проверкой записи в файле?
Аватара пользователя
navab

Re: .: NSIS - все вопросы :. часть 2.

Сообщение navab »

Цитата Mr.Evgen:



Только почему-то к моей форме добавляется лишние кнопки снизу
.: NSIS - все вопросы :. часть 2.




Вы про кнопки "Назад", "Далее" и "Отмена"? Делайте скриншоты, телепатов здесь нет.


Цитата Mr.Evgen:



Как можно моей форме задать размер?
.: NSIS - все вопросы :. часть 2.




Ваша страничка помещается в диалог инсталлятора, изменить размер самого диалога нельзя, если я вас правильно понял...




Цитата Limonica:



Задача:

Проверить есть ли запись в этом тестовом файле, если нет, то крутится в цикле ожидая появления.

Решение:

Вот собственно с решением трудновато, сталкивался кто нибудь из форумчан, с проверкой записи в файле?
.: NSIS - все вопросы :. часть 2.




Ещё одно подтверждение того, что нет смысла тратить своё время на обновление справочника, ну не хочет никто читать всю информацию в нём, чтобы повышать свои знания в NSIS, пока не ткнёшь носом - не прочитаете.

Перевод справки NSIS => LineRead: читаем содержимое строки по номеру
Аватара пользователя
K.A.V.

Re: .: NSIS - все вопросы :. часть 2.

Сообщение K.A.V. »

Код:

Код: Выделить всё

var Component1Dir 
var Component2Dir 
var Component3Dir 
!insertmacro MUI_PAGE_COMPONENTS 
!define MUI_DIRECTORYPAGE_VARIABLE $Component1Dir 
!insertmacro MUI_PAGE_DIRECTORY 
!define MUI_DIRECTORYPAGE_VARIABLE $Component2Dir 
!insertmacro MUI_PAGE_DIRECTORY 
!define MUI_DIRECTORYPAGE_VARIABLE $Component3Dir 
!insertmacro MUI_PAGE_DIRECTORY 
!insertmacro MUI_PAGE_INSTFILES 
Section TEST1 Component1 
  SetOutPath "$Component1Dir"
#    File "..." 
#    File "..." 
SectionEnd 
Section TEST2 Component2 
  SetOutPath "$Component2Dir" 
#    File "..." 
#    File "..." 
SectionEnd 
Section TEST3 Component3 
  SetOutPath "$Component3Dir" 
#    File "..." 
#    File "..." 
SectionEnd
Ответить

Вернуться в «Автоматическая установка приложений»