#!/bin/bash # ############################################################################### # # # 华为终端数据卡linux 后台注册软件 # # 版权属于华为技术有限公司,不得盗用,违者必究 # # Huawei linux MobilePartner licensed software # # Copyright (c) 2007-2008 by Huawei Tech. Corp. Ltd.. # # 作者:张乾春 2008.7.8 # # # ############################################################################### # BAKCURRENTPATH=`pwd` SOFTWARENAME="MegaFon Modem" # g122020 2010.01.11 modify AJ2D15737 INSTALLWORKPATH="$(dirname "$0")" CONFIG_FILE="/etc/datacard_config" HOOK_FILE="/etc/pm/sleep.d" USERDATA_PATH="/usr/local/hw_mp_userdata" # g122020 2010.01.29 AJ2D15962 PPPD_PATH="/usr/local/hw_pppd" FULLVERSION=22.001.18.22.209 SOFTWARENAMEINDESKTOP=$SOFTWARENAME SOFTWARENAME=$(echo $SOFTWARENAME | sed s\#\ \#_\#g) INSTALLPATH="/usr/local/${SOFTWARENAME}" TEMPWORKPATH="/tmp/${SOFTWARENAME}_$$" TEMPFILE="${SOFTWARENAME}_install_$PPID" #Language String LANGUAGESTRING[0]="zh" LANGUAGESTRING[1]="en_US" LANGUAGECODE[0]=0 LANGUAGECODE[1]=1 LANGCODE=${LANGUAGECODE[1]} i=0 while [ ".${LANGUAGESTRING[${i}]}" != "." ] do if [ ${LANGUAGESTRING[${i}]} = "${LANG}" ] then LANGCODE=${LANGUAGECODE[${i}]} break fi i=`expr ${i} + 1` done unset i LYouMustBeRoot[0]="您必须以root用户运行本安装程序" LYouMustBeRoot[1]="You must run the process by root" LPlsInputInstallPath[0]="请输入安装的绝对路径" LPlsInputInstallPath[1]="Please input the absolute path for install" LInstallPath[0]="安装路径" LInstallPath[1]="install path" LIllegal[0]="非法" LIllegal[1]="illegal" LNoFile[0]="找不到文件:" LNoFile[1]="Can not find file: " LCanNotCreateDir[0]="无法创建目录" LCanNotCreateDir[1]="Can not create dir" LMobilePartnerInstall[0]="${SOFTWARENAMEINDESKTOP}安装程序" LMobilePartnerInstall[1]="${SOFTWARENAMEINDESKTOP} installer" LStartInstallPartner[0]="开始安装后台, 请稍后..." LStartInstallPartner[1]="Installing ${SOFTWARENAMEINDESKTOP}..." LCompleteInstallPartner[0]="已经完成后台安装" LCompleteInstallPartner[1]="install have completed, local path is" LLocalPath[0]="本地安装路径" LLocalPath[1]="Local path is" LOverwriteInstalled[0]="已经安装有后台, 是否覆盖" LOverwriteInstalled[1]="The software is exist. Do you want overwrite it" LInstallJRE[0]="安装JRE" LInstallJRE[1]="install JRE" LInstallMP[0]="安装后台" LInstallMP[1]="install ${SOFTWARENAMEINDESKTOP}" LInstallAll[0]="安装JRE和后台" LInstallAll[1]="install JRE and ${SOFTWARENAMEINDESKTOP}" LQuitInstall[0]="退出" LQuitInstall[1]="Exit" LPlsSelect[0]="请选择:" LPlsSelect[1]="Please select: " LYouMustSelect[0]="你必须选择:" LYouMustSelect[1]="You must select: " LInstallEnd[0]="结束, 按任意键退出" LInstallEnd[1]="Finished, press any key to exit" LInstallingVersionOlderThenInstalled[0]="警告:正在安装的版本比系统中的版本旧。是否覆盖?" LInstallingVersionOlderThenInstalled[1]="WARNING: The installing version is older than installed. Do you want to overwrite it" LInstallingVersionLaterThenInstalled[0]="系统中存在旧版本。是否升级?" LInstallingVersionLaterThenInstalled[1]="There is a older version in your system. Do you want to update it" LInstalledVersion[0]="已安装版本:" LInstalledVersion[1]="Installed version:" LInstallingVersion[0]="正在安装版本:" LInstallingVersion[1]="Installing version:" LProgramRunning[0]="请先关闭程序再进行卸载。" LProgramRunning[1]="Program is running, you need close it before uninstalling." # /*yes or no 公共函数, yes返回0, no返回1*/ yes_or_no() { if [ ${#} -ne 2 ] then echo -e "yes_or_or: ${ErrorPara[${LANGCODE}]}" return 1 fi if [ "${2}" = "Y" ] then DEFPMPT="([Y]/N):\c " DEFVAL="Y" else DEFPMPT="(Y/[N]):\c " DEFVAL="N" fi echo -e "${1} ${DEFPMPT}" read ANS while [ "${ANS}" != "Y" -a "${ANS}" != "y" -a "${ANS}" != "N" -a "${ANS}" != "n" -a ! -z "${ANS}" ] do echo -e "${1} ${DEFPMPT}" read ANS done : ${ANS:="${DEFVAL}"} if [ "${ANS}" != "Y" -a "${ANS}" != "y" ] then unset ANS return 1 fi unset ASN return 0 } #检查启动安装脚本的用户是否为root用户 CheckID() { if [ `id | awk '{print $1}'` != "uid=0(root)" ] then echo -e "${LYouMustBeRoot[${LANGCODE}]}" echo -e "\n${LInstallEnd[${LANGCODE}]}" read -n 1 clear exit fi } #检查当前是否有后台正在运行 CheckRunning() { RUNJAR=`ps -ef |grep -v grep |grep MobilePartner.jar | awk '{print $2}'` RUNBIN=`ps -ef |grep -v grep |grep MobilePartner.bin | awk '{print $2}'` if [ "x${RUNJAR}" != "x" ] then echo -e "Program is running, you need close it before installing." read RESP exit fi if [ "x${RUNBIN}" != "x" ] then echo -e "Program is running, you need close it before installing." read RESP exit fi } #检查相关文件,在硬盘上建立存放安装文件的临时目录,并拷贝安装文件到该目录 PreInstall() { #检查安装包文件 if [ ! -f "${INSTALLWORKPATH}"/MobilePartner.bin ] then echo -e "${LNoFile[${LANGCODE}]}MobilePartner.bin" exit fi if [ ! -f "${INSTALLWORKPATH}"/data.bin ] then echo -e "${LNoFile[${LANGCODE}]}data.bin" exit fi if [ ! -f "${INSTALLWORKPATH}"/7zr ] then echo -e "${LNoFile[${LANGCODE}]}7zr" exit fi if [ ! -d "${TEMPWORKPATH}" ] then mkdir ${TEMPWORKPATH} fi if [ ! -d "${TEMPWORKPATH}" ] then echo -e "\n${LCanNotCreateDir[${LANGCODE}]}: ${TEMPWORKPATH}" exit fi #拷贝后台安装文件 cp -f "${INSTALLWORKPATH}"/MobilePartner.bin ${TEMPWORKPATH} cp -f "${INSTALLWORKPATH}"/data.bin ${TEMPWORKPATH} cp -f "${INSTALLWORKPATH}"/7zr ${TEMPWORKPATH} chmod +x ${TEMPWORKPATH}/7zr #拷贝安装脚本到硬盘上 cp -f "${INSTALLWORKPATH}"/install ${TEMPWORKPATH} chmod a+x ${TEMPWORKPATH}/install #add by liuzhiqiang... begin if [ -f $CONFIG_FILE ] then #获取版本信息 . $CONFIG_FILE #获取系统中已经安装的版本号 VRVERSIONINSTALLED=`echo $FullVersion | cut -d '.' -f1` BUILDVERSIONINSTALLED=`echo $FullVersion | cut -d '.' -f2` DEVELOPVERSIONINSTALLED=`echo $FullVersion | cut -d '.' -f3` SPVERSIONINSTALLED=`echo $FullVersion | cut -d '.' -f4` CUSTOMIZEVERSIONINSTALLED=`echo $FullVersion | cut -d '.' -f5` #获取正在安装的版本号 VRVERSIONINSTALLING=`echo $FULLVERSION | cut -d '.' -f1` BUILDVERSIONINSTALLING=`echo $FULLVERSION | cut -d '.' -f2` DEVELOPVERSIONINSTALLING=`echo $FULLVERSION | cut -d '.' -f3` SPVERSIONINSTALLING=`echo $FULLVERSION | cut -d '.' -f4` CUSTOMIZEVERSIONINSTALLING=`echo $FULLVERSION | cut -d '.' -f5` #打印版本信息 echo "${LInstalledVersion[${LANGCODE}]} ${FullVersion}" echo "${LInstallingVersion[${LANGCODE}]} ${FULLVERSION}" #检查已经安装的版本是否更新 while [ 1 ] do #比较VR版本号,不相同则提示用户覆盖安装 if [ $VRVERSIONINSTALLED -ne $VRVERSIONINSTALLING ] then InstallDifferentVersionPrompt break fi #比较C版本号,不相同则提示用户覆盖安装 if [ $CUSTOMIZEVERSIONINSTALLED -ne $CUSTOMIZEVERSIONINSTALLING ] then InstallDifferentVersionPrompt break fi #比较B版本号 if [ $BUILDVERSIONINSTALLED -gt $BUILDVERSIONINSTALLING ] then #如果已安装的B版本号较新,则提示用户已经安装了较新的后台版本,是否继续 InstallOlderVersionPrompt break elif [ $BUILDVERSIONINSTALLED -lt $BUILDVERSIONINSTALLING ] then #如果已安装的B版本号较老,不需要继续比较D版本和SP版本,直接覆盖安装 InstallLaterVersionPrompt break fi #比较D版本号 if [ $DEVELOPVERSIONINSTALLED -gt $DEVELOPVERSIONINSTALLING ] then #如果已安装的D版本号较新,则提示用户已经安装了较新的后台版本,是否继续 InstallOlderVersionPrompt break elif [ $DEVELOPVERSIONINSTALLED -lt $DEVELOPVERSIONINSTALLING ] then #如果已安装的D版本号较老,不需要继续比较SP版本,直接覆盖安装 InstallLaterVersionPrompt break fi #比较SP版本号 if [ $SPVERSIONINSTALLED -gt $SPVERSIONINSTALLING ] then #如果已安装的SP版本号较新,则提示用户已经安装了较新的后台版本,是否继续 InstallOlderVersionPrompt break elif [ $SPVERSIONINSTALLED -lt $SPVERSIONINSTALLING ] then #如果已安装的SP版本号较老,直接覆盖安装 InstallLaterVersionPrompt break fi #走到这表示所有版本号一致,给出提示是否覆盖 InstallSameVersionPrompt break done INSTALLPATH=`egrep "^path=" $CONFIG_FILE | awk -F '=' '{print $2}'` else #输入安装目录 echo -e "\n ${LPlsInputInstallPath[${LANGCODE}]}[${INSTALLPATH}]: \c" read ANS : ${ANS:="${INSTALLPATH}"} INSTALLPATH=${ANS} #检查目录的合法性 if [[ ${INSTALLPATH} != /* ]] then echo -e "\n${LInstallPath[${LANGCODE}]} ${LIllegal[${LANGCODE}]}" DisplayEndMsg exit fi #使安装目录合理化 if [ -d "${INSTALLPATH}" ] then INSTALLPATH=${INSTALLPATH}/${SOFTWARENAME} fi fi #创建安装目录 if [ ! -d "${INSTALLPATH}" ] then mkdir ${INSTALLPATH} fi if [ ! -d "${INSTALLPATH}" ] then echo -e "\n${LCanNotCreateDir[${LANGCODE}]}: ${INSTALLPATH}" DisplayEndMsg exit fi echo -e "\n${LLocalPath[${LANGCODE}]}: ${INSTALLPATH}" } InstallLaterVersionPrompt() { #新版本,提示是否升级 yes_or_no "\n${LInstallingVersionLaterThenInstalled[${LANGCODE}]}?" Y if [ ${?} -ne 0 ] then DisplayEndMsg exit fi } InstallSameVersionPrompt() { #如果以前已经安装过后台则提示是否覆盖 yes_or_no "\n${LOverwriteInstalled[${LANGCODE}]}?" Y if [ ${?} -ne 0 ] then DisplayEndMsg exit fi } InstallOlderVersionPrompt() { #安装的版本比系统中的版本旧,给出提示 yes_or_no "\n${LInstallingVersionOlderThenInstalled[${LANGCODE}]}?" N if [ ${?} -ne 0 ] then DisplayEndMsg exit fi } InstallDifferentVersionPrompt() { #如果以前已经安装过后台则提示是否覆盖 yes_or_no "\n${LOverwriteInstalled[${LANGCODE}]}?" Y if [ ${?} -ne 0 ] then DisplayEndMsg exit fi } #begin xkf21619 added 20101203 #修改问题:在Ubuntu10.04系统下,正常安装重启系统后,后台菜单消失。 #原因: Ubuntu10.04系统增加了菜单缓存机制,每次启动读取菜单时读取/usr/share/applications下与当前系统语言匹配的desktop.*.cache中的信息 # (desktop.*.cache文件只有一个)如:在en_US.utf8语言下,会读取desktop.en_US.utf8.cache中的菜单信息 WriteMenuCacheInfo() { #find the .cache file, the file is used for cache the menus, * instead of language type, such as en_US.utf8 for CACHE_FILE in ls /usr/share/applications/desktop.*.cache do if [ -f ${CACHE_FILE} ]; then #将"#begin MobilePartner"和"#end MobilePartner"用作后台菜单缓存信息的标志,以便卸载时删除 echo "#begin MobilePartner" >> ${CACHE_FILE} echo "[MobilePartner]" >> ${CACHE_FILE} echo "Categories=Application;Network" >> ${CACHE_FILE} echo "Comment=${SOFTWARENAMEINDESKTOP} Applications" >> ${CACHE_FILE} echo "Comment[en]=${SOFTWARENAMEINDESKTOP} Applications" >> ${CACHE_FILE} echo "Encoding=UTF-8" >> ${CACHE_FILE} echo "Name=${SOFTWARENAMEINDESKTOP}" >> ${CACHE_FILE} echo "Name[en]=${SOFTWARENAMEINDESKTOP}" >> ${CACHE_FILE} echo "Terminal=false" >> ${CACHE_FILE} echo "Type=Application" >> ${CACHE_FILE} echo "Exec=${INSTALLPATH}/MobilePartner" >> ${CACHE_FILE} echo "Icon=${INSTALLPATH}/mobile.png" >> ${CACHE_FILE} echo "Path=${INSTALLPATH}" >> ${CACHE_FILE} echo "" >> ${CACHE_FILE} echo "[UninstallMobilePartner]" >> ${CACHE_FILE} echo "Categories=Application;Network" >> ${CACHE_FILE} echo "Comment=Uninstall ${SOFTWARENAMEINDESKTOP}" >> ${CACHE_FILE} echo "Comment[en]=Uninstall ${SOFTWARENAMEINDESKTOP}" >> ${CACHE_FILE} echo "Encoding=UTF-8" >> ${CACHE_FILE} echo "Name=Uninstall ${SOFTWARENAMEINDESKTOP}" >> ${CACHE_FILE} echo "Name[en]=Uninstall ${SOFTWARENAMEINDESKTOP}" >> ${CACHE_FILE} echo "Terminal=true" >> ${CACHE_FILE} echo "Type=Application" >> ${CACHE_FILE} echo "Exec=${INSTALLPATH}/UninstallMobilePartner" >> ${CACHE_FILE} echo "Icon=${INSTALLPATH}/uninstall.gif" >> ${CACHE_FILE} echo "Path=${INSTALLPATH}" >> ${CACHE_FILE} echo "#end MobilePartner" >> ${CACHE_FILE} echo "" >> ${CACHE_FILE} fi done } #xkf21619 added 20101203 将删除desktop.*.cache文件关联的缓存内容的代码写入卸载脚本 WriteRemoveMenuCacheCodeToUnin() { echo "TEMP_FILE=\"/tmp/temp_desktop_cache_\$PPID\"" >> ./UninstallMobilePartner echo "for CACHE_FILE in ls /usr/share/applications/desktop.*.cache" >> ./UninstallMobilePartner echo "do" >> ./UninstallMobilePartner echo "if [ -f \${CACHE_FILE} ]; then" >> ./UninstallMobilePartner echo "cp -f \${CACHE_FILE} \${TEMP_FILE}" >> ./UninstallMobilePartner echo "fi" >> ./UninstallMobilePartner echo "done" >> ./UninstallMobilePartner echo "if [ -f \${TEMP_FILE} ]; then" >> ./UninstallMobilePartner echo "BEGIN=\$(sed -n \"/\\#begin MobilePartner/=\" \${TEMP_FILE})" >> ./UninstallMobilePartner echo "END=\$(sed -n \"/\\#end MobilePartner/=\" \${TEMP_FILE})" >> ./UninstallMobilePartner echo "if [ \${BEGIN} -ge 0 -a \${END} -ge 0 ] 2>/dev/null; then" >> ./UninstallMobilePartner echo "sed \"\${BEGIN},\${END}d\" \${TEMP_FILE} > \${CACHE_FILE} 2>/dev/null" >> ./UninstallMobilePartner echo "fi" >> ./UninstallMobilePartner echo "rm -f \${TEMP_FILE}" >> ./UninstallMobilePartner echo "fi" >> ./UninstallMobilePartner } #end xkf21619 #安装后台 InstallMobilePartner() { # Madhu added to set the library path echo -e "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALLPATH} \n export LD_LIBRARY_PATH \n" > ${HOME}/.bash_profile echo -e -n "\n${LStartInstallPartner[${LANGCODE}]}" cd "${INSTALLPATH}" #在安装路径下解压缩安装包 # tar jxf ${TEMPWORKPATH}/MobilePartner.tar.bz2 >/dev/null 2>&1 "${TEMPWORKPATH}/7zr" x -y ${TEMPWORKPATH}/MobilePartner.bin >/dev/null 2>&1 "${TEMPWORKPATH}/7zr" x -y ${TEMPWORKPATH}/data.bin >/dev/null 2>&1 # chmod -R a+w "${INSTALLPATH}"/userdata # chmod -R a+w "${INSTALLPATH}"/log chmod -R a+w "${INSTALLPATH}"/config #运行驱动工具安装脚本 chmod -R a+x ./driver/* #./driver/install ${INSTALLPATH} >/dev/null 2>&1 ./driver/install ${INSTALLPATH} .bin #Joven 2009.09.03 add #安装CommMgr并设置为系统服务 # chmod +x ./CommMgr/* # cd CommMgr # ./install_CommMgr ${INSTALLPATH} >/dev/null 2>&1 # cd .. #copy相关文件到相应目录 #拷贝拨号相关文件 chmod a+x ./sbin/* chmod -R a+w ./hw_pppd chmod -R a+x ./hw_pppd # ubuntu10.10 cann't modem connect begin ./hw_pppd/sbin/install_pppd rm -rf ./hw_pppd/sbin/install_pppd rm -rf /usr/local/hw_pppd # ubuntu10.10 cann't modem connect end cp -rf ./hw_pppd /usr/local/ #copy QT libs to Mobile Partner directory cp -lrf ${INSTALLPATH}/qtlib/lib*.so* ${INSTALLPATH} #copy在线升级需要的动态库文件到相应目录 #copy only when UpdateDog directory exists if [ -d ${INSTALLPATH}/UpdateDog ] then cp -lrf ${INSTALLPATH}/qtlib/lib*.so* ${INSTALLPATH}/UpdateDog cp -lrf ${INSTALLPATH}/plugins/imageformats/libqgif.so ${INSTALLPATH}/UpdateDog/plugins/imageformats cp -lrf ${INSTALLPATH}/plugins/imageformats/libqico.so ${INSTALLPATH}/UpdateDog/plugins/imageformats fi #uncommenting this to create /usr/local/hw_mobile_userdata/Mobile_Partner #拷贝用户数据文件夹 if [ ! -d ${USERDATA_PATH} ] then mkdir $USERDATA_PATH mkdir ${USERDATA_PATH}/${SOFTWARENAME} #20091112 c00106366 add - create userdata folder mkdir ${USERDATA_PATH}/${SOFTWARENAME}/userdata # do not create userdata directory. # cp -rf ./userdata ${USERDATA_PATH}/${SOFTWARENAME} chmod -R a+w ${USERDATA_PATH} chmod -R a+r ${USERDATA_PATH} else #如果存在相同软件名称的用户数据,不覆盖 if [ ! -d ${USERDATA_PATH}/${SOFTWARENAME} ] then mkdir ${USERDATA_PATH}/${SOFTWARENAME} #20091112 c00106366 add - create userdata folder mkdir ${USERDATA_PATH}/${SOFTWARENAME}/userdata # do not create userdata directory. # cp -rf ./userdata ${USERDATA_PATH}/${SOFTWARENAME} chmod -R a+w ${USERDATA_PATH} chmod -R a+r ${USERDATA_PATH} fi fi #20091112 c00106366 add - set the permission of userdata folder chmod -R a+rwx ${USERDATA_PATH}/${SOFTWARENAME} # create userdata/log directory for ui. # mkdir -p ${USERDATA_PATH}/${SOFTWARENAME}/log #修改sudoers文件 grep -v "MobilePartner.sh" /etc/sudoers >/tmp/${TEMPFILE} 2>&1 DELETECOMMENT="delete requiretty for hw_mobile" REQUIRETTY=`grep "${DELETECOMMENT}" /tmp/${TEMPFILE}` if [ "x${REQUIRETTY}" != "x" ] then REQUIRETTY=`echo "${REQUIRETTY}" | awk -F ',' '{printf $2}'` else REQUIRETTY=`grep "requiretty" /tmp/${TEMPFILE}` if [ "x${REQUIRETTY}" != "x" ] then sed -i "s/${REQUIRETTY}/# ,${REQUIRETTY},${DELETECOMMENT}/g" /tmp/${TEMPFILE} 2>/dev/null fi fi # Shashank: Defect fix AJ2D13470: Begin echo -e "ALL ALL=(ALL) NOPASSWD:ALL" >> /tmp/${TEMPFILE} # Madhu added a new batch file # Shashank [s72814] added to generate .bin file and to give access permissions in user mode: Begin # AJ2D14022 karthik exec ${INSTALLPATH}/MobilePartner.bin will now be put after the special steps for each distro. #echo -e "#!/bin/bash \n LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALLPATH} \n export LD_LIBRARY_PATH \n export PATH=/sbin:$PATH \n sudo LD_LIBRARY_PATH=${INSTALLPATH} \n exec ${INSTALLPATH}/MobilePartner.bin" > ${INSTALLPATH}/MobilePartner_Bat #DTS2010072902594 lkf26999 2010-8-9 Xserver path add to PATH echo -e "#!/bin/bash \n LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALLPATH} \n export LD_LIBRARY_PATH \n export PATH=/usr/bin/X11:/usr/X11R6/bin:/sbin:$PATH \n sudo LD_LIBRARY_PATH=${INSTALLPATH} \n" > ${INSTALLPATH}/MobilePartner_Bat #DTS2010072902594 modify end mv ${INSTALLPATH}/MobilePartner ${INSTALLPATH}/MobilePartner.bin mv ${INSTALLPATH}/MobilePartner_Bat ${INSTALLPATH}/MobilePartner chmod a+x ${INSTALLPATH}/MobilePartner chmod a+x ${INSTALLPATH}/MobilePartner.bin chmod 777 -R ${INSTALLPATH}/* # w00159557 2010-6-18 add for customization begin CURRENT_VERSION=$(grep VALUE "${INSTALLPATH}/SysConfig.dat" | head -n1 | cut -d = -f2 | tr -d "\015") VERSION_TO_REPLACE=$(grep version= "${INSTALLPATH}/RunInfo.ini" | head -n1) sed -e 's/'"${VERSION_TO_REPLACE}"'/version='"${CURRENT_VERSION}"'/' "${INSTALLPATH}/RunInfo.ini" > RunInfo.tmp mv -f RunInfo.tmp ${INSTALLPATH}/RunInfo.ini CURRENT_OPERATOR=$(grep operator "${INSTALLPATH}/SysConfig.dat" | head -n1 | cut -d = -f2 | tr -d "\015") OPERATOR_TO_REPLACE=$(grep operator= "${INSTALLPATH}/RunInfo.ini" | head -n1) sed -e 's/'"${OPERATOR_TO_REPLACE}"'/operator='"${CURRENT_OPERATOR}"'/' "${INSTALLPATH}/RunInfo.ini" > RunInfo.tmp mv -f RunInfo.tmp ${INSTALLPATH}/RunInfo.ini # w00159557 2010-6-18 add for customization end # Shashank [s72814] added to generate .bin file and to give access permissions in user mode: End # Shashank: Defect fix AJ2D13470: End cp -f /tmp/${TEMPFILE} /etc/sudoers #编辑并创建桌面启动图标和开始菜单启动图标 sed "s#\${HW_SOFTWARENAME}#${SOFTWARENAMEINDESKTOP}#g" ./MobilePartner.desktop > /tmp/${TEMPFILE} 2>/dev/null sed "s#\${HW_INSTALLPATH}#${INSTALLPATH}#g" /tmp/${TEMPFILE} > ./MobilePartner.desktop 2>/dev/null if [ -d /root/Desktop ] then cp -f ./MobilePartner.desktop /root/Desktop else cp -f ./MobilePartner.desktop /root fi cp -f ./MobilePartner.desktop /usr/share/applications #解决问题:在Ubuntu10.04系统下,正常安装重启系统后,后台菜单消失 xkf21619 added 20101203 WriteMenuCacheInfo #编辑并创建开始菜单卸载图标 sed "s#\${HW_SOFTWARENAME}#${SOFTWARENAMEINDESKTOP}#g" ./UninstallMobilePartner.desktop > /tmp/${TEMPFILE} 2>/dev/null sed "s#\${HW_INSTALLPATH}#${INSTALLPATH}#g" /tmp/${TEMPFILE} > ./UninstallMobilePartner.desktop 2>/dev/null cp -f ./UninstallMobilePartner.desktop /usr/share/applications #编辑并创建运行脚本 echo -e "#!/bin/bash" > ./MobilePartner.sh # for Ubuntu UBUNTURELEASE=`grep Ubuntu /etc/issue 2>&1 | awk -F ' ' '{printf $1}'` if [ "x${UBUNTURELEASE}" = "xUbuntu" ] then if [ ! -d /usr/share/fonts/truetype/arphic ] then mkdir -p /usr/share/fonts/truetype/arphic fi fi # for Debian DEBIANRELEASE=`grep Debian /etc/issue 2>&1 | awk -F ' ' '{printf $1}'` if [ "x${DEBIANRELEASE}" = "xDebian" ] then if [ ! -d /usr/share/fonts/truetype/arphic ] then mkdir -p /usr/share/fonts/truetype/arphic fi fi # for OpenSuSE if [ -f /etc/SuSE-release ] then if [ ! -d /usr/share/fonts/truetype ] then mkdir -p /usr/share/fonts/truetype fi # AJ2D14022 karthik put this in our bat file. # echo -e "export DISPLAY=:0" >> ./MobilePartner.sh #DTS2010062201326 w00159557 2010-10-26 modify begin echo -e "export DISPLAY=\$1" >> ${INSTALLPATH}/MobilePartner fi if [ -z $(/usr/bin/sudo) ] then echo "There is no sudo command in your system,you'd better run the software by root" echo "Press any key to continue..." read -n 1 echo -e "#!/bin/bash \n ${INSTALLPATH}/MobilePartner \${DISPLAY}" > ${INSTALLPATH}/ReadDisplay else echo -e "#!/bin/bash \n sudo ${INSTALLPATH}/MobilePartner \${DISPLAY}" > ${INSTALLPATH}/ReadDisplay fi chmod +x ${INSTALLPATH}/ReadDisplay #DTS2010062201326 w00159557 2010-10-26 modify end #insert hook if [ -d /etc/pm/sleep.d ] then cp -f ${INSTALLPATH}/sbin/67hw_hook /etc/pm/sleep.d chmod +x /etc/pm/sleep.d/67hw_hook fi # for jre compatibility echo -e "export LIBXCB_ALLOW_SLOPPY_LOCK=1" >> ./MobilePartner.sh # Shashank [s72814]: added for executing MobilePartner.bin file from MobilePartner.sh file: Begin echo -e "APPDIR=${INSTALLPATH}" >> ./MobilePartner.sh echo -e "cd \${APPDIR}" >> ./MobilePartner.sh echo -e "\${APPDIR}/MobilePartner.bin &" >> ./MobilePartner.sh # AJ2D14022 karthik now put the executable echo -e "exec ${INSTALLPATH}/MobilePartner.bin" >> ${INSTALLPATH}/MobilePartner # Shashank [s72814]: added for executing MobilePartner.bin file from MobilePartner.sh file: End chmod +x ./MobilePartner.sh chmod a+x ./MobilePartner #编辑并创建卸载脚本 sed -i "s/{LYouMustBeRoot}/${LYouMustBeRoot[${LANGCODE}]}/g" ./UninstallMobilePartner sed -i "s/{LInstallEnd}/${LInstallEnd[${LANGCODE}]}/g" ./UninstallMobilePartner sed -i "s/{LProgramRunning}/${LProgramRunning[${LANGCODE}]}/g" ./UninstallMobilePartner sed -i "s#{HOOK_FILE}#${HOOK_FILE}#g" ./UninstallMobilePartner sed -i "s#{INSTALLPATH}#${INSTALLPATH}#g" ./UninstallMobilePartner sed -i "s#{CONFIG_FILE}#${CONFIG_FILE}#g" ./UninstallMobilePartner if [ "x${REQUIRETTY}" != "x" ] then sed -i "s/{REQUIRETTY}/${REQUIRETTY}/g" ./UninstallMobilePartner sed -i "s/{DELETECOMMENT}/${DELETECOMMENT}/g" ./UninstallMobilePartner else grep -v {REQUIRETTY} ./UninstallMobilePartner > /tmp/${TEMPFILE} cp -f /tmp/${TEMPFILE} ./UninstallMobilePartner fi chmod +x ./UninstallMobilePartner #xkf21619 added 20101203 修改问题:在Ubuntu10.04系统下,正常安装重启系统后,后台菜单消失。 WriteRemoveMenuCacheCodeToUnin DonePrompt "${LStartInstallPartner[${LANGCODE}]}" #echo -e "\n${SOFTWARENAMEINDESKTOP} ${LCompleteInstallPartner[${LANGCODE}]} ${INSTALLPATH}" #20100104 c00106366 add #After install succeed, create a new file to let onlineupdate know it's finished #This file should be delete by onlineupdate program touch "${USERDATA_PATH}/${SOFTWARENAME}/userdata/install.flg" #清除本地文件 # rm -rf ./userdata rm -rf ./hw_pppd rm -rf ./*.desktop rm -f /tmp/${TEMPFILE} rm -rf ${TEMPWORKPATH} #DTS2010062201326 w00159557 2010-10-26 add begin chmod 777 ${INSTALLPATH} #DTS2010062201326 w00159557 2010-10-26 add end } DonePrompt() { LOGCHARNUM=`echo "$1" | wc -m` TERMCHARNUM=`stty size | awk -F ' ' '{printf $2}'` LOGCHARNUM=`expr $TERMCHARNUM - $LOGCHARNUM` echo "[ done ] " | awk '{printf "%"'"$LOGCHARNUM"'"s", $0}' echo -e "" } # /*提供选择语言*/ SelectLanguage() { while : do case ${LANGCODE} in 0) echo -e "\n\t1. 简体中文" echo -e "\t2. 英文" echo -e "\n\t请选择语言: [1]\c" read RESP : ${RESP:="1"} ;; *) echo -e "\n\t1. Simplified Chinese" echo -e "\t2. English" echo -e "\n\tPlease select Language: [2]\c" read RESP : ${RESP:="2"} ;; esac case ${RESP} in [1,2]) LANGCODE=`expr ${RESP} - 1` return ${LANGCODE} ;; *) case ${LANGCODE} in 0) echo -e - "\n\t你必须选择: 1, 2\n" ;; *) echo -e "\n\tPlease select: 1, 2\n" ;; esac ;; esac done } # /*显示程序启动时的信息*/ DisplayStartMsg() { clear } # /*显示程序结束时的信息*/ DisplayEndMsg() { cd "${BAKCURRENTPATH}" rm -rf "${TEMPWORKPATH}" echo -e "\n${LInstallEnd[${LANGCODE}]}" read -n 1 clear } GenConfigFile() { cd $INSTALLPATH echo "path=$INSTALLPATH" > $CONFIG_FILE echo "name=MobilePartner" >> $CONFIG_FILE echo "Exec=$INSTALLPATH/MobilePartner" >> $CONFIG_FILE echo "FullVersion=$FULLVERSION" >> $CONFIG_FILE } clear CheckID CheckRunning #SelectLanguage DisplayStartMsg #当让用户选择安装时,如下部分代码到应该放到while循环中 PreInstall InstallMobilePartner GenConfigFile #luanying add 20081229 #echo "Download Programs finished!" > "$INSTALLPATH/lib/UpdateInstall/inputLog.txt" DisplayEndMsg exit 0 #不让用户选择安装,如下代码无效 while : do echo -e - "***\t\t${LMobilePartnerInstall[${LANGCODE}]}\t\t***\n" echo -e - "${LPlsSelect[${LANGCODE}]}\n" echo -e - "\t1) ${LInstallMP[${LANGCODE}]}" echo -e - "\t0) ${LQuitInstall[${LANGCODE}]}\n" echo -e - "Choice: [0]\c" read RESP : ${RESP:="0"} case ${RESP} in 1) PreInstall InstallJRE InstallMobilePartner GenConfigFile ;; 0) DisplayEndMsg exit 0 ;; *) echo -e - "${LYouMustSelect[${LANGCODE}]}1, 0" ;; esac done