Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Операционные системы > Операционные системы общие вопросы
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 29.06.2011, 15:27   #1
Osanve
Форумчанин
 
Аватар для Osanve
 
Регистрация: 11.12.2010
Сообщений: 50
Репутация: 10
По умолчанию *.bat-файл в качестве инсталлятора

Здравствуйте.

Написал программу. Меня к ней попросили сделать инсталлятор. В принципе, из-за того, что писал на Java, он не нужен для самой программы, но просьба заключалась в том, чтобы не надо было ничего отдельно ставить и все можно было сделать одним файлом.
В голову пришла мысль написать bat'ник, но возникли проблемы:
1) Сначала решил автоматизировать создание БД и таблиц в ней, требуемы для программы. Был написан sql-скрипт:
Код:
CREATE DATABASE izh_media;
USE izh_media;
CREATE TABLE floor (id INT NOT NULL AUTO_INCREMENT, code TEXT CHARACTER SET utf8, state BOOL NOT NULL, PRIMARY KEY(id));
CREATE TABLE users (name TEXT CHARACTER SET utf8);
CREATE TABLE advertisers (id INT NOT NULL AUTO_INCREMENT, firm TEXT CHARACTER SET utf8, manager TEXT CHARACTER SET utf8, phone TEXT CHARACTER SET utf8, start DATE, finish DATE, place TEXT CHARACTER SET utf8, PRIMARY KEY(id));
QUIT
Он вызывается из *.bat-файла следующим образом:
Код:
mysql -uroot -p <new.sql
В качестве результата нет даже новой БД.

2) С запуском инсталляторов тоже беда.
Код:
start "jre-6u26-windows-i586.exe"
start "mysql-5.5.13-win32.msi"
После выполнения данных команд просто открываются две консоли, имеющие соответствующие имена и ничего не происходит.
Соответственно работает или нет следующий код я даже не проверял:
Код:
copy "C:\Program Files\Java\jre6\lib\ext" "mysql-connector-java-5.1.16-bin.jar"
Подскажите, пожалуйста, в чем проблема?

P.S. Опыт написания как bat'ников, так и sql-скриптов полдня (сегодня с утра с помощью гугла пытался разобраться).
Osanve вне форума   Ответить с цитированием
Старый 30.06.2011, 13:12   #2
Somebody
Профессионал
 
Регистрация: 08.10.2007
Адрес: Нижегородская обл.
Сообщений: 1,185
Репутация: 801
По умолчанию

Цитата:
После выполнения данных команд просто открываются две консоли, имеющие соответствующие имена и ничего не происходит.
Это такая фича у start. Если имя написать без кавычек - это имя файла, если в кавычках - заголовок. Если надо имя файла в кавычках, то
Код:
start "" "jre-6u26-windows-i586.exe"
Somebody вне форума   Ответить с цитированием
Старый 30.06.2011, 15:57   #3
Osanve
Форумчанин
 
Аватар для Osanve
 
Регистрация: 11.12.2010
Сообщений: 50
Репутация: 10
По умолчанию

Somebody, спасибо за разъяснение. Запустить удалось. Остался вопрос по поводу запуска SQL-скрипта. С ним что-то не так или я его не так запускаю?
Osanve вне форума   Ответить с цитированием
Старый 30.06.2011, 20:53   #4
Alex&(R)
Пользователь
 
Аватар для Alex&(R)
 
Регистрация: 15.05.2011
Сообщений: 14
Репутация: 16
По умолчанию

Попробуйте так:
Цитата:
mysql --user=root --password=root < new.sql
Где root - логин и пароль по умолчанию.
А, вообще, читайте хелп:
Цитата:
mysql --help
Alex&(R) вне форума   Ответить с цитированием
Старый 02.07.2011, 11:27   #5
Osanve
Форумчанин
 
Аватар для Osanve
 
Регистрация: 11.12.2010
Сообщений: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex&(R) Посмотреть сообщение
Попробуйте так:
Не помогло. Буду дальше вкуривать то, что выдает гугл (с английским, просто, не очень дружу).
Osanve вне форума   Ответить с цитированием
Старый 02.07.2011, 18:43   #6
Osanve
Форумчанин
 
Аватар для Osanve
 
Регистрация: 11.12.2010
Сообщений: 50
Репутация: 10
По умолчанию

И возник еще вопрос: Сейчас при вводе команд:
Код:
start jre-6u26-windows-i586.exe
start mysql-5.5.13-win32.msi
Инсталляторы и JRE и MySQL Server запускаются одновременно. Можно-ли как-то сделать поочередный запуск?
На C++ мне это удавалось сделать (после CreateProcess прописать WaitForSingleObject), но для запуска *.msi файлов требуется специфический хедер из MS VS. У меня Express Edition, и из-за того, что в коммерческих целях нельзя использовать даже не смотрел есть-ли он в наличии там.
Osanve вне форума   Ответить с цитированием
Старый 03.07.2011, 02:08   #7
Alex&(R)
Пользователь
 
Аватар для Alex&(R)
 
Регистрация: 15.05.2011
Сообщений: 14
Репутация: 16
По умолчанию

В таком случае не используйте start, пишите так:
Код:
jre-6u26-windows-i586.exe
mysql-5.5.13-win32.msi
Насчет MySQL: mysql - это клиент, чтобы он выполнил SQL-запросы на локальном сервере, необходимо предварительно запустить этот самый сервер (daemon) mysqld с необходимыми параметрами.

Последний раз редактировалось Alex&(R); 03.07.2011 в 03:18.
Alex&(R) вне форума   Ответить с цитированием
Старый 03.07.2011, 11:30   #8
Osanve
Форумчанин
 
Аватар для Osanve
 
Регистрация: 11.12.2010
Сообщений: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex&(R) Посмотреть сообщение
В таком случае не используйте start, пишите так:
Код:
jre-6u26-windows-i586.exe
mysql-5.5.13-win32.msi
Это помогло. Благодарю.

Цитата:
Сообщение от Alex&(R) Посмотреть сообщение
Насчет MySQL: mysql - это клиент, чтобы он выполнил SQL-запросы на локальном сервере, необходимо предварительно запустить этот самый сервер (daemon) mysqld с необходимыми параметрами.
Сама программа к MySQL коннектится без проблем. Но даже при вводе следующей строки в консоль MySQL:
Код:
mysql> source C:\"Documents and Settings"\Osanve\"Рабочий стол"\mirror\new.sql
Выскакивает 22-ая ошибка (гугл мне по ней ничего не смог толком сказать (может быть, конечно, я не так пытался гуглить)). Через батник вообще ничего не получается.
Osanve вне форума   Ответить с цитированием
Старый 03.07.2011, 12:06   #9
Somebody
Профессионал
 
Регистрация: 08.10.2007
Адрес: Нижегородская обл.
Сообщений: 1,185
Репутация: 801
По умолчанию

Цитата:
Можно-ли как-то сделать поочередный запуск?
Ещё вариант (например, если запускать GUIшную прогу из командной строки):
Код:
start /wait ...
Код:
для запуска *.msi файлов требуется специфический хедер из MS VS
Обычный ShellExecute или даже CreateProcess msiexec.exe.
Цитата:
Код:
mysql> source C:\"Documents and Settings"\Osanve\"Рабочий стол"\mirror\new.sql
Кавычки в топку и либо прямые слеши, либо обратные, но их экранировать надо.
Somebody вне форума   Ответить с цитированием
Старый 03.07.2011, 15:44   #10
Osanve
Форумчанин
 
Аватар для Osanve
 
Регистрация: 11.12.2010
Сообщений: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Обычный ShellExecute или даже CreateProcess msiexec.exe.
Искал в msdn, нашел только то, что отписывал выше. Сам сначала пробовал через CreateProcess - поток не создавался. С ShellExecute, если честно, не разбирался.

Цитата:
Сообщение от Somebody Посмотреть сообщение
Кавычки в топку и либо прямые слеши, либо обратные, но их экранировать надо.
Благодарю.
Osanve вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bat-файл Simbad Помощь студентам 1 03.04.2011 20:17
Bat файл wayne Софт 4 09.04.2010 19:27
bat файл Пепел Феникса Операционные системы общие вопросы 4 05.04.2010 16:23
bat-файл RipleR Помощь студентам 8 03.11.2009 19:28


14:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.