Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Страница 1 из 11
Модератор форума: Peter, DEMBEL 
Форум NeoBook » Всё о программе NeoBook » Проекты NeoBook » Создание почти инсталятора (Создание инсталятора который будет удалять только файлы)
Создание почти инсталятора
Woha28Дата: Ср, 07 Августа 2013, 12:04 | Сообщение # 1
Участник
Всем добрый день!
Помогите в создание почти инсталятора, дело в том что я хочу сделать инсталятор для модов игры Skyrim, (те кто играют в Skyrim поймут) чтобы можно было их устанавливать и удалять. Первая проблема появилась когда я пытался вложить файлы в проэкт, так-как влаживать папки с файлами нельзя, то некоторые файлы вложить не удалось по причине одноименности файлов, хотя они и лежат в разных папках. Поэтому решил что инсталятор будет лежать в папке с модами и буду использовать команду [Pubdir].
Но тут возникла другая ппроблема, как мне узнать пути всех файлов которые лежат в папке (Data) с модом.
Прикрепления: 1355955.jpg(33Kb)


 
СообщениеВсем добрый день!
Помогите в создание почти инсталятора, дело в том что я хочу сделать инсталятор для модов игры Skyrim, (те кто играют в Skyrim поймут) чтобы можно было их устанавливать и удалять. Первая проблема появилась когда я пытался вложить файлы в проэкт, так-как влаживать папки с файлами нельзя, то некоторые файлы вложить не удалось по причине одноименности файлов, хотя они и лежат в разных папках. Поэтому решил что инсталятор будет лежать в папке с модами и буду использовать команду [Pubdir].
Но тут возникла другая ппроблема, как мне узнать пути всех файлов которые лежат в папке (Data) с модом.

Автор - Woha28
Дата добавления - 07 Августа 2013 в 12:04
mishemДата: Ср, 07 Августа 2013, 12:50 | Сообщение # 2
Эксперт форума
А в архив запаковать не пробовал?
Цитата (Woha28)
как мне узнать пути всех файлов которые лежат в папке (Data) с модом.

Ну почему вопросы задаются так что приходится догадываться о чем речь? Отвечать так же?

Папка Data я так полагаю на компьютере куда устанавливать надо будет? Хотя сначала решил что она в Pubdir.

Ищи ключи в реестре, если путь к игре при установке записывается, то бери оттуда. Если нет, делай окно с предложением указать путь к игре. А после по этому пути проверять, установлена ли действительно там игра. Если да, то тогда уже и распаковывать туда.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеА в архив запаковать не пробовал?
Цитата (Woha28)
как мне узнать пути всех файлов которые лежат в папке (Data) с модом.

Ну почему вопросы задаются так что приходится догадываться о чем речь? Отвечать так же?

Папка Data я так полагаю на компьютере куда устанавливать надо будет? Хотя сначала решил что она в Pubdir.

Ищи ключи в реестре, если путь к игре при установке записывается, то бери оттуда. Если нет, делай окно с предложением указать путь к игре. А после по этому пути проверять, установлена ли действительно там игра. Если да, то тогда уже и распаковывать туда.

Автор - mishem
Дата добавления - 07 Августа 2013 в 12:50
Woha28Дата: Ср, 07 Августа 2013, 13:46 | Сообщение # 3
Участник
Принцип моей будующей проги должен быть такой:
она будет лежать в папке с модами, к примеру в папке MODS в которой моды лежат по категориям:
Броня
Геймплей
Графика
Дома
Магия
Оружие
SKSE

соответственно в каждой категории папки с названиями модов типа:
Броня воина тени
Броня воров и ассасинов
Броня Феникса
и.т.д и вот в каждой папке брони лежит папка Data с самим модом которую и нужно скопировать в папку с игрой то есть в
C:\Games\The Elder Scrolls V Skyrim.Legendary Edition
но главная проблема чтобы потом при удалении удалить только файлы которые лежали в Data и её подпапках
не удаляя сами папки так-как в C:\Games\The Elder Scrolls V Skyrim.Legendary Edition уже есть папка Data с теми же подпапками и в ней лежат файлы самой игры.
К примеру в одном из модов в папке Data лежит файл 01.esp так же еще две папки meshes и Textures в которых тоже лежат или папки или файлы. Короче в папке Data полностью повторяется структура папок как в игре.
Именно поэтому при копировании папки Data прога должна запоминать путь каждого файла типа:
C:\Games\The Elder Scrolls V Skyrim.Legendary Edition\Data\01.esp или
C:\Games\The Elder Scrolls V Skyrim.Legendary Edition\Data\meshes\Dagger\Dagger.nif
а по кнопке удалить, удалять только файл по этому пути так-как при копировании происховит слияние одноименных папок.
Я пробовал воспользоватся обычной прогой для создания инсталяторов, но она удаляет все и файлы и папки.


 
СообщениеПринцип моей будующей проги должен быть такой:
она будет лежать в папке с модами, к примеру в папке MODS в которой моды лежат по категориям:
Броня
Геймплей
Графика
Дома
Магия
Оружие
SKSE

соответственно в каждой категории папки с названиями модов типа:
Броня воина тени
Броня воров и ассасинов
Броня Феникса
и.т.д и вот в каждой папке брони лежит папка Data с самим модом которую и нужно скопировать в папку с игрой то есть в
C:\Games\The Elder Scrolls V Skyrim.Legendary Edition
но главная проблема чтобы потом при удалении удалить только файлы которые лежали в Data и её подпапках
не удаляя сами папки так-как в C:\Games\The Elder Scrolls V Skyrim.Legendary Edition уже есть папка Data с теми же подпапками и в ней лежат файлы самой игры.
К примеру в одном из модов в папке Data лежит файл 01.esp так же еще две папки meshes и Textures в которых тоже лежат или папки или файлы. Короче в папке Data полностью повторяется структура папок как в игре.
Именно поэтому при копировании папки Data прога должна запоминать путь каждого файла типа:
C:\Games\The Elder Scrolls V Skyrim.Legendary Edition\Data\01.esp или
C:\Games\The Elder Scrolls V Skyrim.Legendary Edition\Data\meshes\Dagger\Dagger.nif
а по кнопке удалить, удалять только файл по этому пути так-как при копировании происховит слияние одноименных папок.
Я пробовал воспользоватся обычной прогой для создания инсталяторов, но она удаляет все и файлы и папки.

Автор - Woha28
Дата добавления - 07 Августа 2013 в 13:46
mishemДата: Ср, 07 Августа 2013, 18:41 | Сообщение # 4
Эксперт форума
На пример. Получишь все пути к файлам в выбранной папке.
После в цикле можешь удалить все файлы по известным путям.
Рзбирайся.

Добавлено (07 Августа 2013, 16:59)
---------------------------------------------
Вот, написал с комментариями для тех кто в танке.
Код
FolderBox "Выбрать папку" "[PuthFolder]"
.Здесь все понятно. Если нажали кнопку Отменить или Закрыть, то дальше скрипт не обрабатывается
If "[PuthFolder]" "=" ""
     Return
EndIf
.Это строка к которой будем возвращаться если еще есть не обработанные папки
:GotoLine
.Получаем список файлов и папок по указанному пути
FileList "[PuthFolder]\*.*" "Files+Folders" "[Text]"
.Разбиваем в массив
StrParse "[Text]" "[#13]" "[Text]" "[Col]"
.И запускаем цикл
Loop "1" "[Col]" "[i]"
      .Определяем есть ли у имени расширение, если есть, значит файл, если нет значит папка
      ExtractFileExt "[Text[i]]" "[Ext]"
      If "[Ext]" "<>" ""
         .Если файл, добавляем в конец списка в эту переменную
         SetVar "[Files]" "[Files][PuthFolder]\[Text[i]][#13]"
      Else
         .Если папка, добавляем в конец списка в эту переменную
         SetVar "[Folders]" "[Folders][PuthFolder]\[Text[i]][#13]"
      EndIf
EndLoop
.Цикл закончился и удаляем ненужный теперь массив и переменные
DeleteArray "[Text]" "All"
ClearVariables "PuthFolder,Col,Text,i"
.Если в переменной где находятся пути к папкам есть запись, значит нужно и эту папку обработать
If "[Folders]" "<>" ""
       .Путь к папке заканчивается символом переноса строки[#13], ищем этот символ
      SearchStr "[#13]" "[Folders]" "[Search]" ""
      .Копируем путь к папке и сохраняем опять в переменную [PuthFolder]
      .Это та же переменная в которую мы получали путь когда выбирали папку
      .Можно было бы присвоить другой переменной и опять ниже писать тот же код что вверху
      .Что бы этого не делать мы используем все те же переменные
      .На то они и переменные :)>
      SubStr "[Folders]" "1" "[Search]-1" "[PuthFolder]"
      .Теперь удаляем скопированный путь к папке что бы больше не обрабатывать его
      StrDel "[Folders]" "1" "[Search]" "[Folders]"
      .И переходим на строку :GotoLine
      .Где уже по новому пути к вложенной папке парсим все то что в ней находится.
      .Если и в ней есть папки, мы добавляем в конец списка с папками тот путь который там будет,
      .Когда дойдет и до той папки очередь она тоже обработается
      .И так будет повторятся до тех пор пока перемнная [Folders] не останется пустой
      .Тем самым путь к файлам у нас остается, а путь к папкам мы поочередно удаляем
GotoLine "GotoLine"
EndIf
.Здесь я для наглядности вывел все пути.
.Этого можно не делать, а просто распарсить эту строку и поочередно в цикле удалитиь все файлы
SetVar "[TextEntry1]" "[Files]"

.Все это хорошо, но если будет много файлов и папок это может занять много времени
.Чем больше будет добавляться путей, тем медленнее программа будет работать
Прикрепления: 7853404.zip(2Kb)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Ср, 07 Августа 2013, 21:27
 
СообщениеНа пример. Получишь все пути к файлам в выбранной папке.
После в цикле можешь удалить все файлы по известным путям.
Рзбирайся.

Добавлено (07 Августа 2013, 16:59)
---------------------------------------------
Вот, написал с комментариями для тех кто в танке.
Код
FolderBox "Выбрать папку" "[PuthFolder]"
.Здесь все понятно. Если нажали кнопку Отменить или Закрыть, то дальше скрипт не обрабатывается
If "[PuthFolder]" "=" ""
     Return
EndIf
.Это строка к которой будем возвращаться если еще есть не обработанные папки
:GotoLine
.Получаем список файлов и папок по указанному пути
FileList "[PuthFolder]\*.*" "Files+Folders" "[Text]"
.Разбиваем в массив
StrParse "[Text]" "[#13]" "[Text]" "[Col]"
.И запускаем цикл
Loop "1" "[Col]" "[i]"
      .Определяем есть ли у имени расширение, если есть, значит файл, если нет значит папка
      ExtractFileExt "[Text[i]]" "[Ext]"
      If "[Ext]" "<>" ""
         .Если файл, добавляем в конец списка в эту переменную
         SetVar "[Files]" "[Files][PuthFolder]\[Text[i]][#13]"
      Else
         .Если папка, добавляем в конец списка в эту переменную
         SetVar "[Folders]" "[Folders][PuthFolder]\[Text[i]][#13]"
      EndIf
EndLoop
.Цикл закончился и удаляем ненужный теперь массив и переменные
DeleteArray "[Text]" "All"
ClearVariables "PuthFolder,Col,Text,i"
.Если в переменной где находятся пути к папкам есть запись, значит нужно и эту папку обработать
If "[Folders]" "<>" ""
       .Путь к папке заканчивается символом переноса строки[#13], ищем этот символ
      SearchStr "[#13]" "[Folders]" "[Search]" ""
      .Копируем путь к папке и сохраняем опять в переменную [PuthFolder]
      .Это та же переменная в которую мы получали путь когда выбирали папку
      .Можно было бы присвоить другой переменной и опять ниже писать тот же код что вверху
      .Что бы этого не делать мы используем все те же переменные
      .На то они и переменные :)>
      SubStr "[Folders]" "1" "[Search]-1" "[PuthFolder]"
      .Теперь удаляем скопированный путь к папке что бы больше не обрабатывать его
      StrDel "[Folders]" "1" "[Search]" "[Folders]"
      .И переходим на строку :GotoLine
      .Где уже по новому пути к вложенной папке парсим все то что в ней находится.
      .Если и в ней есть папки, мы добавляем в конец списка с папками тот путь который там будет,
      .Когда дойдет и до той папки очередь она тоже обработается
      .И так будет повторятся до тех пор пока перемнная [Folders] не останется пустой
      .Тем самым путь к файлам у нас остается, а путь к папкам мы поочередно удаляем
GotoLine "GotoLine"
EndIf
.Здесь я для наглядности вывел все пути.
.Этого можно не делать, а просто распарсить эту строку и поочередно в цикле удалитиь все файлы
SetVar "[TextEntry1]" "[Files]"

.Все это хорошо, но если будет много файлов и папок это может занять много времени
.Чем больше будет добавляться путей, тем медленнее программа будет работать

Автор - mishem
Дата добавления - 07 Августа 2013 в 18:41
Woha28Дата: Ср, 07 Августа 2013, 20:24 | Сообщение # 5
Участник
Спасибо вам огромное! А я как не пытался не мог получить пути всех файлов, и плагины разные пробывал.
Огромнейшее вам спасибо!
Теперь дело пойдет. Хотел еще у вас спросить, объект список никак нельзя без фона, а то как-то не очень красиво будет. Вот посмотрите мой проект, там пока работает только кнопка "Броня" или может посоветуете чем заменить объект список.
По моей задумки при нажатии какой либо кнопки, (например та же кнопка "Броня") происходит переход на другую страницу проекта и на ней выводится список всех модов брони, а при нажатии на название любого мода будет выводится описание этого мода и фото (если имеется).
В принципе список подходит, вот только фон списка портит всю красоту. Я уже думал может понасоздавать кнопок? но сколько модов будет в той же папке "Броня" за ранее неизвестно вдруг кнопок не хватит. Список хоть прокрутить можно.
Я как-то читал на нашем форуме обсуждение прозрачного списка или может плагина какого и вроде решения так и не нашли, но это было давно, может быть что нибудь изменилось?
Еще раз огромное вам спасибо за помощь.
Прикрепления: Skyrim_Mods.zip(3Kb)




Сообщение отредактировано
Woha28 - Ср, 07 Августа 2013, 20:27
 
СообщениеСпасибо вам огромное! А я как не пытался не мог получить пути всех файлов, и плагины разные пробывал.
Огромнейшее вам спасибо!
Теперь дело пойдет. Хотел еще у вас спросить, объект список никак нельзя без фона, а то как-то не очень красиво будет. Вот посмотрите мой проект, там пока работает только кнопка "Броня" или может посоветуете чем заменить объект список.
По моей задумки при нажатии какой либо кнопки, (например та же кнопка "Броня") происходит переход на другую страницу проекта и на ней выводится список всех модов брони, а при нажатии на название любого мода будет выводится описание этого мода и фото (если имеется).
В принципе список подходит, вот только фон списка портит всю красоту. Я уже думал может понасоздавать кнопок? но сколько модов будет в той же папке "Броня" за ранее неизвестно вдруг кнопок не хватит. Список хоть прокрутить можно.
Я как-то читал на нашем форуме обсуждение прозрачного списка или может плагина какого и вроде решения так и не нашли, но это было давно, может быть что нибудь изменилось?
Еще раз огромное вам спасибо за помощь.

Автор - Woha28
Дата добавления - 07 Августа 2013 в 20:24
mishemДата: Ср, 07 Августа 2013, 21:34 | Сообщение # 6
Эксперт форума
Картинок нет в проекте. Ну да ладно, они в принципе и не нужны мне.
По поводу списка. Если под списком картинка то есть плагин ksEditPict, Гарик делал.

Если просто однотонный фон, то у списка сделать такой же цвет.

Можно использовать плагин NeoBookDBPro, там есть возможность а таблицу вставить фоновый рисунок. Также можно непосредственно в базе хранить все нужные файлы.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеКартинок нет в проекте. Ну да ладно, они в принципе и не нужны мне.
По поводу списка. Если под списком картинка то есть плагин ksEditPict, Гарик делал.

Если просто однотонный фон, то у списка сделать такой же цвет.

Можно использовать плагин NeoBookDBPro, там есть возможность а таблицу вставить фоновый рисунок. Также можно непосредственно в базе хранить все нужные файлы.

Автор - mishem
Дата добавления - 07 Августа 2013 в 21:34
Woha28Дата: Ср, 07 Августа 2013, 22:19 | Сообщение # 7
Участник
Вот с картинками.
P.S. Че-то я в натуре тупанул.
Прикрепления: 5588790.zip(73Kb)


 
СообщениеВот с картинками.
P.S. Че-то я в натуре тупанул.

Автор - Woha28
Дата добавления - 07 Августа 2013 в 22:19
Форум NeoBook » Всё о программе NeoBook » Проекты NeoBook » Создание почти инсталятора (Создание инсталятора который будет удалять только файлы)
Страница 1 из 11
Поиск: