Вступление Столкнулся я с тем, что установщик одной программы не смог корректно доработать до конца и создать ярлык для запуска. Как следует из заголовка, речь идёт о приложении для Windows. Таким образом родился этот скрипт. Первоначально задача скрипта состояла в том, чтобы создать на рабочем столе ссылку для запуска Windows-приложения на CD-ROM, при этом ссылка должна сработать независимо от того в какой привод вставлен ваш CD-ROM с программой. Таким образом, этот скрипт подходит не только для того случая, который случился у меня, - когда установщик программы не создал ярлык для запуска, но и тогда, когда создан такой ярлык, когда в нём содержится ссылка, указывающая непосредственно на файл запуска, который находится на CD-ROM'е, так что, если вы вставили CD-ROM не в тот привод - программа не запустится. Со временем скрипт был доработан, и теперь он подходит и для того случая, когда необходимо создать ярлык на программу, расположенную на жёстком диске.
Запуск и работа со скриптом После запуска скрипт задаёт пять вопросов:
После того как вы введёте ответы на все вопросы, на вашем Рабочем столе появится ссылка (ярлык) для запуска вашего приложения с именем, которое вы ввели в пункте 2 (если вы ничего не введёте в ответ на второй вопрос, то имя файла будет таким же, какое вы ввели при ответе на первый вопрос). Первый вопрос. В ответ на первый вопрос в качестве командной строки для запуска укажите файл, расположенный на CD-ROM'е, при этом путь к файлу должен быть в формате DOS, а не UNIX. Т.е. в формате [[\]<path name>\]<file name> (путь относительно диска CD-ROM). В качестве командной строки для запуска программы можно также указать и файл, расположенный на винчестере. Но тогда в обязательном порядке укажите диск и каталог, в котором находится файл, который вы хотите запускать. В этом случае формат примет вид z:\[<path name>\]<file name>. Вы можете также ничего не вводить и на первый вопрос, тогда созданный ярлык будет запускать этот скрипт. Второй вопрос - это название программы, можно применять произвольный текст, использовать кириллицу. Это имя будет присвоено самому ярлыку и также будет использовано в диалоговом окне в случае, когда диск с программой не вставлен в привод CD-ROM. По умолчанию это будет имя файла, введённое в первом запросе. Третий вопрос позволяет выбрать рисунок для вашего ярлыка. Это можно сделать и позже: щелкните ПРАВОЙ клавишей мыши по ярлыку на Рабочем столе и выберите из контекстного меню "Свойства" (Properties); во вкладке "Общие" найдёте большую кнопку с рисунком для данного ярлыка - нажмите на эту кнопку и выберите желаемый рисунок (иконку). Четвёртый вопрос позволяет вам использовать переключение разрешения монитора на 640x480 пикселей перед запуском вашего Windows-приложения. После того как Windows-приложение отработает, разрешение монитора вернётся в исходное состояние. Последний вопрос позволяет задать каталог с конфигурацией wine. По умолчанию используется конфигурация из каталога $HOME/.wine. Создать новую конфигурацию wine в другой директории можно с помощью wineprefixcreate, например:
wineprefixcreate --prefix ~/.wineIE6или с помощью winecfg:env WINEPREFIX="$HOME/.wineIE6" winecfg
wineprefixcreate --prefix ~/.wineIE6
env WINEPREFIX="$HOME/.wineIE6" winecfg
Запуск Windows-приложения на CD-ROM Перед запуском ярлыка вставьте диск в устройство для чтения компакт-дисков и DVD-дисков и смонтируйте его.
Скрипт Текст скрипта:
#!/bin/bash# Скрипт для запуска Windows-программы. Требует параметры:# 1-[разрешение монитора 640x480] (y-да; n-нет), 2-[команда для запуска программы], 3-[название программы]run(){ if [ "$1" = "y" ]; then wh=(`xrandr`) xrandr -s 640x480 fi cd "$2" && env WINEPREFIX="$WINEPREFIX" wine "$3" if [ "$1" = "y" ]; then xrandr -s ${wh[7]}x${wh[9]%,} fi}if [ ! -z "$2" ]then if [ ! -z "$4" -a -d "$4" ] then WINEPREFIX=$4 else WINEPREFIX=$HOME/.wine fi if [ "${2:1:1}" == ":" ] then run $1 "$(ls -l ~/.wine/dosdevices | grep -i c: | grep -v :: | awk '{ print $NF }' | sed "s/^\.\./${WINEPREFIX//\//\\/}/")$(echo ${2%\\*} | sed -e "s/^.://" -e 's/\\/\//g')" "${2##*\\}" exit $? else if [ ! -z "$3" ] # Проверка наличия входного аргумента 3 then program_name="'$3' " fi OLD_IFS="$IFS" IFS=$'\n' array1=(`grep -Ei "iso9660" /etc/mtab`) if [ "${#array1}" -ne "0" ]; then for cd in ${array1[*]} do IFS="$OLD_IFS" array=(${cd[*]}) if [ -f ${array[1]}/$2 ]; then array2=(`ls -l $WINEPREFIX/dosdevices | grep -E "${array[0]}"`) if [ ! -e "$WINEPREFIX/dosdevices/${array2[7]%:}" ] then ln -s ${array[1]} $WINEPREFIX/dosdevices/${array2[7]%:} fi run $1 "${array[1]}" "$2" exit $? fi done fi kdialog --title 'Ошибка CD-ROMа' --sorry "Вставьте диск с программой $program_nameв привод CD-ROM и запустите программу снова." if [ "$?" -eq "127" ] then echo "Установите пакет: kde-baseapps-bin" fi fielse clear read -r -p $"Введите команду для запуска программы: " start_program read -p $"Введите название программы: " program_name read -p $"Имя файла со значком: " icon echo -e "\nДля лучших результатов установите переключение разрешения монитора\nна 640x480 точек.\n\nИспользовать переключение разрешения монитора?" choice "(Да-1, Нет-0) -?" 1 0 result=$? if [ "$result" -eq "1" ] then ScreenResolution=y else if [ "$result" -eq "127" ] then echo;echo "Не установлен скрипт choice. См. http://kubuntu.ru/node/11524" echo "Переключение разрешения монитора использоваться не будет" fi ScreenResolution=n fi echo; read -p $"Введите путь к каталогу для конфигурации wine (по умолчанию: \$HOME/.wine): " WINEPREFIX if [ "$program_name" = "" ] then if [ "$start_program" = "" ] then name=`basename "$0"` name=${name%.*} else name=`basename "${start_program%.*}"` fi else name=$program_name fi if [ "$start_program" = "" ] then Terminal=true else Terminal=false fi scriptname=${0/#.\//$PWD\/} cat <<End-of-message>"$HOME/Рабочий стол/$name.desktop"[Desktop Entry]Comment=Comment[ru]=Exec=${scriptname/#..\//${PWD%\/*}/} $ScreenResolution "${start_program//\\/\\\\}" "$program_name" ${WINEPREFIX/\~/$HOME}GenericName=GenericName[ru]=Icon=${icon//\'/}MimeType=Name=$nameName[ru]=$nameStartupNotify=trueTerminal=$TerminalTerminalOptions=Type=ApplicationX-DCOP-ServiceType=X-KDE-SubstituteUID=falseX-KDE-Username=X-Ubuntu-Gettext-Domain=desktop_kdebaseEnd-of-message chmod +x "$HOME/Рабочий стол/$name.desktop"fi
Установка скрипта Сохраните текст кода в файл и сделайте файл скрипта исполняемым. Более удобный вариант сделать файл скрипта исполняемым, командой chmod -- это: chmod 555 scriptname #(выдача прав на чтение/исполнение любому пользователю в системе) или chmod +rx scriptname #(выдача прав на чтение/исполнение любому пользователю в системе)chmod u+rx scriptname #(выдача прав на чтение/исполнение только "владельцу" скрипта)
chmod 555 scriptname #(выдача прав на чтение/исполнение любому пользователю в системе)
chmod +rx scriptname #(выдача прав на чтение/исполнение любому пользователю в системе)chmod u+rx scriptname #(выдача прав на чтение/исполнение только "владельцу" скрипта)
После того, как вы сделаете файл сценария исполняемым поместите его в каталог /usr/local/bin (естественно, что для этого вы должны обладать правами root), чтобы сделать его доступным для себя и других пользователей системы. После этого сценарий можно вызвать, просто напечатав название файла в командной строке и нажав клавишу [ENTER]. Например, если имя скрипта run, тогда: sudo chmod +rx runsudo mv run /usr/local/bin/
sudo chmod +rx runsudo mv run /usr/local/bin/
Подробнее о форматировании
Отправить комментарий