Yellow Leaf

Yellow Leaf


Поиск по сайту


Вход
Правила портала
Регистрация
Забыли пароль?
О команде проекта
Справка по оформлению постов


Последние комментарии к новостям и статьям
Re: С днём системного администратора!
Re: Вышел новый номер v10.07(2) компьютерного журнала UserAndLINUX.
Re: Отчет о первом "Runtu InstallFest" в Екатеринбурге
Re: OpenVPN сервер для офисного шлюза на FreeBSD
Re: Релиз Runtu LXDE 10.04!
Ещё комментарии >>>


Новые файлы
Debian: cue2tracks_0.2.11_all (Дополнение для CUE 2 Tracks v0.2.11)
Gentoo: cue2tracks-0.2.11 (Дополнение для CUE 2 Tracks v0.2.11)
CUE 2 Tracks v0.2.11
Jabber-Shell 20090303
EasySoft AutoRun 0.4.1


Новое на форуме
Движок сайта. версия 2.0
Нужен логопед, срочно
Словить процесс
проблемы с разделом жесткого диска
планировщик, веб интерфейс


Проекты
Jabber-Shell
Qmmp
QStarDict
PHPSAAdmin


 
   


Друзья сайта
 Open Kazan - Казанское сообщество пользователей OpenSource 


Посетителей с 08.09.2006

4671844


Внешний вид портала


RSS-Ленты
Новости
Файлы


 

   
  Яндекс цитирования  

«Жёлтый Лист» - cайт о мире юникс
Новости Форум Статьи Файлы Пользователи
   

Создание дистрибутива Windows-приложения для Linux

MooSE 2008-01-28 12:03:40

В какой-то момент у меня появилась задача: на большое количество компьютеров (около пятидесяти), работающих под управлением kubuntu 7.04, потребовалось установить одно windows приложение (разумеется под Wine). Установка на каждом компьютере заняла бы достаточно время, поэтому нужно было более простое и быстрое решение.

Решение было найдено, и оно достаточно простое. Оно основано на том, что все windows-приложения и все их настройки в конечном итоге расположены в папке ~/.wine. Достаточно настроить всё на одной машине, упаковать эту папочку в тарбол и распаковать на остальных машинах. В принципе на этом всё, но поскольку был ряд дополнительных условий, то рассмотрим задачу подробнее.

Сначала был установлен wine

apt-get install wine

Для нормальной работы приложения понадобился IE6, который был установлен с помощью скрипта ies4linux. Поскольку по умолчанию скрипт в качестве wineprefix использует каталог ~/.ies4linux/ie6, то для нормальной работы wine без лишних заморочек был создал симлинк:

ln -s ~/.ies4linux/ie6 ~/.wine

Далее было установлено необходимое приложение:

wine Setup.exe

После установки был самостоятельно создан ярлык для этого приложения на рабочем столе KDE. Имя файла ярлыка - ~/Desktop/Prog.desktop

Всё. Теперь осталось только установить wine на остальные машины и скопировать эту конфигурацию. Для этого был создан несложный дистрибутив. Для начала "подготовим почву":

cd ~
mkdir Distr
tar -cvjf Distr/wine_max.tar.bz2  .ies4linux
cp Desktop/Prog.desktop Distr/
cp /var/cache/apt/archives/binfmt-support_1.2.8_all.deb Distr/
cp /var/cache/apt/archives/wine_0.9.33-0ubuntu1_i386.deb Distr/

Далее создаём скрипт Distr/install.sh следующего содержания:

#!/bin/sh

# На всякий случай удаляем предыдущие инсталляции
rm -rf ~/.ies4linux
rm -rf ~/.wine

# Получаем путь исходным файлам
SOURCEDIR=`dirname $0`

# Распаковываем архив
tar jxfv ${SOURCEDIR}/wine_max.tar.bz2 -C ~/

# Создаём симлинк
ln -s ~/.ies4linux/ie6 ~/.wine

# Копируем ярлык
cp ${SOURCEDIR}/Prog.desktop ~/Desktop/

# Инсталлируем wine
sudo dpkg -i ${SOURCEDIR}/binfmt-support_1.2.8_all.deb ${SOURCEDIR}/wine_0.9.33-0ubuntu1_i386.deb

# Извещаем о завершении работы:)
echo Installation Successfull!

Делаем скрипт исполняемым:

chmod +x Distr/install.sh

Всё. Теперь копируем дистрибутив на флэшку или раскладываем на наши машины по сети и на всех запускаем инсталлятор.

В моём случае на этом работа кончилась, однако уже потом это решение было усовершенствовано. Сначала был создан тарбол со всеми исходными файлами:

tar cvf distr.tar Distr/

Далее был создан скрипт distr.sh следующего содержания:

#!/bin/sh

# Длина скрипта (количество строк)
LENGTH=22

# Отцепляем приклеенный архив во временный файл
tail -n +${LENGTH} $0 > /tmp/distr.tar

# Распаковываем архив во временную папку
tar xvf /tmp/distr.tar -C /tmp

# Удаляем временный файл
rm -f /tmp/distr.tar

# Запускаем инсталлятор
sh /tmp/Distr/install.sh

# Удаляем временные файлы
rm -rf /tmp/Distr

exit 0

Параметр LENGTH полезно уточнить. Он должен быть на единицу больше чем вывод команды:

wc -l distr.sh

Далее "склеиваем" наш скрипт с тарболом:

cat distr.sh distr.tar > setup.sh
chmod +x setup.sh

Всё. Мы получили инсталлятор в одном файле. С таким инсталлятором работать намного удобнее :)

Можно так же написать скрипт, который "раскидает" этот инсталлятор по целевым машинам с помощью scp, а потом запустит его по ssh, но это я оставлю читателю.

Ключевые слова: wine sh tar ies4linux инсталлятор tail cat wc

Версия для печати

Возможно вас заинтересуют следующие товары:


Комментарии:

Содержание*:
=

При копировании материалов с этого сайта ссылка на источник обязательна! Уважайте труд авторов!


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

рублей


Обратная связь


© 2006-2010 Вадим Калинников aka MooSE


Смотрите! Как купить квартиру в цхалтубо. Москва . Форум подарки для мужчин. Какой подарок удивит мужчину.