mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-05-20 23:19:52 +08:00
优化lib挂载方式
This commit is contained in:
parent
27cd65a48f
commit
e175a80e57
@ -4,62 +4,19 @@ if [[ ! -d "$CURRENT_DIR/usr" ]]; then
|
||||
zenity --info --text=未安装运行库,无法运行 --no-wrap
|
||||
exit
|
||||
fi
|
||||
command=""
|
||||
if [[ -d "$CURRENT_DIR/usr/lib/i386-linux-gnu" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/i386-linux-gnu\" /usr/lib/i386-linux-gnu "
|
||||
if [[ ! -d /usr/lib/i386-linux-gnu ]] && ; then
|
||||
pkexec mkdir -p /usr/lib/i386-linux-gnu
|
||||
fi
|
||||
if [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||
bwrap --dev-bind / / \
|
||||
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--ro-bind "$CURRENT_DIR/usr" /usr \
|
||||
--ro-bind /usr/share /usr/share \
|
||||
--ro-bind /usr/bin /usr/bin \
|
||||
--ro-bind /usr/sbin /usr/sbin \
|
||||
-- "$@"
|
||||
exit
|
||||
fi
|
||||
if [[ -d "$CURRENT_DIR/usr/lib/x86_64-linux-gnu" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/x86_64-linux-gnu\" /usr/lib/x86_64-linux-gnu "
|
||||
if [[ ! -d /usr/lib/x86_64-linux-gnu/ ]]; then
|
||||
pkexec mkdir -p /usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
if [[ ! -f /lib64 ]] && [[ ! -d /lib64 ]] && [[ ! -L /lib64 ]]; then
|
||||
pkexec ln -s /usr/lib64 /lib64
|
||||
fi
|
||||
if [[ -d "$CURRENT_DIR/usr/lib/arm-linux-gnueabihf" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/arm-linux-gnueabihf\" /usr/lib/arm-linux-gnueabihf "
|
||||
if [[ ! -d /usr/lib/arm-linux-gnueabihf/ ]]; then
|
||||
pkexec mkdir -p /usr/lib/arm-linux-gnueabihf/
|
||||
fi
|
||||
fi
|
||||
if [[ -d "$CURRENT_DIR/usr/lib/aarch64-linux-gnu" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/aarch64-linux-gnu\" /usr/lib/aarch64-linux-gnu "
|
||||
if [[ ! -d /usr/lib/aarch64-linux-gnu/ ]]; then
|
||||
pkexec mkdir -p /usr/lib/aarch64-linux-gnu/
|
||||
fi
|
||||
fi
|
||||
if [[ -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib64\" /lib64 "
|
||||
if [[ ! -d /lib64 ]]; then
|
||||
pkexec ln -s /usr/lib64 /lib64
|
||||
fi
|
||||
fi
|
||||
if [[ -f "$CURRENT_DIR/usr/lib/ld-linux-aarch64.so.1" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/ld-linux-aarch64.so.1\" /usr/lib/ld-linux-aarch64.so.1 "
|
||||
if [[ ! -f /usr/lib/ld-linux-aarch64.so.1 ]] && [[ ! -L /usr/lib/ld-linux-aarch64.so.1 ]]; then
|
||||
pkexec bash /usr/lib/ld-linux-aarch64.so.1
|
||||
fi
|
||||
fi
|
||||
if [[ -f "$CURRENT_DIR/usr/lib/ld-linux-armhf.so.3" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/ld-linux-armhf.so.3\" ld-linux-armhf.so.3 "
|
||||
if [[ ! -f /usr/lib/ld-linux-armhf.so.3 ]]; then
|
||||
pkexec touch /usr/lib/ld-linux-armhf.so.3
|
||||
fi
|
||||
fi
|
||||
if [[ -f "$CURRENT_DIR/usr/lib/ld-linux.so.2" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/ld-linux.so.2\" ld-linux.so.2 "
|
||||
if [[ ! -f /usr/lib/ld-linux.so.2 ]]; then
|
||||
pkexec touch /usr/lib/ld-linux.so.2
|
||||
fi
|
||||
fi
|
||||
if [[ -f "$CURRENT_DIR/usr/lib64/ld-linux-x86-64.so.2" ]]; then
|
||||
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib64/ld-linux-x86-64.so.2\" ld-linux-x86-64.so.2 "
|
||||
if [[ ! -f /usr/lib64/ld-linux-x86-64.so.2 ]]; then
|
||||
pkexec touch /usr/lib64/ld-linux-x86-64.so.2
|
||||
fi
|
||||
fi
|
||||
|
||||
bwrap --dev-bind / / \
|
||||
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--ro-bind "$CURRENT_DIR/usr/lib64" /lib \
|
||||
@ -67,4 +24,4 @@ bwrap --dev-bind / / \
|
||||
--ro-bind /usr/share /usr/share \
|
||||
--ro-bind /usr/bin /usr/bin \
|
||||
--ro-bind /usr/sbin /usr/sbin \
|
||||
-- "${@:2}"
|
||||
-- "$@"
|
||||
|
@ -4,24 +4,81 @@ if [[ ! -d "$CURRENT_DIR/usr" ]]; then
|
||||
zenity --info --text=未安装运行库,无法运行 --no-wrap
|
||||
exit
|
||||
fi
|
||||
systemNeedCommand=""
|
||||
for libr in `ls /usr/lib`
|
||||
do
|
||||
if [[ -f /usr/lib/$libr/libc.so.6 ]]; then
|
||||
if [[ ! -f "$CURRENT_DIR/usr/lib/$libr/libc.so.6" ]]; then
|
||||
echo $libr
|
||||
systemNeedCommand="$systemNeedCommand --ro-bind /usr/lib/$libr/ /usr/lib/$libr/ "
|
||||
mkdir -p "$CURRENT_DIR/usr/lib/$libr"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for libr in `ls /usr/lib/ld*.so*`
|
||||
do
|
||||
if [[ -f $libr ]]; then
|
||||
if [[ ! -f "$CURRENT_DIR/$libr" ]]; then
|
||||
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||
touch "$CURRENT_DIR/$libr"
|
||||
else
|
||||
if [[ ! -s "$CURRENT_DIR/$libr" ]]; then
|
||||
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [[ -L /usr/lib64 ]] && [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||
mkdir -p "$CURRENT_DIR/usr/lib64"
|
||||
fi
|
||||
for libr in `ls /usr/lib64/ld*.so*`
|
||||
do
|
||||
if [[ -f $libr ]]; then
|
||||
if [[ ! -f "$CURRENT_DIR/$libr" ]]; then
|
||||
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||
touch "$CURRENT_DIR/$libr"
|
||||
else
|
||||
if [[ ! -s "$CURRENT_DIR/$libr" ]]; then
|
||||
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [[ ! -d "$CURRENT_DIR/usr/lib/locale" ]]; then
|
||||
systemNeedCommand="$systemNeedCommand --ro-bind /usr/lib/locale /usr/lib/locale "
|
||||
fi
|
||||
echo $systemNeedCommand
|
||||
if [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
|
||||
bwrap --dev-bind / / \
|
||||
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--ro-bind "$CURRENT_DIR/usr" /usr \
|
||||
--bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--bind "$CURRENT_DIR/usr" /usr \
|
||||
--ro-bind /usr/share /usr/share \
|
||||
--ro-bind /usr/bin /usr/bin \
|
||||
--ro-bind /usr/sbin /usr/sbin \
|
||||
$systemNeedCommand \
|
||||
-- "$@"
|
||||
exit
|
||||
fi
|
||||
if [[ ! -f /lib64 ]] && [[ ! -d /lib64 ]] && [[ ! -L /lib64 ]]; then
|
||||
pkexec mkdir /lib64 -p
|
||||
pkexec ln -s /usr/lib64 /lib64
|
||||
fi
|
||||
if [[ -L /lib64 ]] || [[ -d /lib64 ]] || [[ -f /lib64 ]];then
|
||||
bwrap --dev-bind / / \
|
||||
--bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--bind "$CURRENT_DIR/usr/lib64" /lib \
|
||||
--bind "$CURRENT_DIR/usr" /usr \
|
||||
--ro-bind /usr/share /usr/share \
|
||||
--ro-bind /usr/bin /usr/bin \
|
||||
--ro-bind /usr/sbin /usr/sbin \
|
||||
$systemNeedCommand \
|
||||
-- "$@"
|
||||
exit
|
||||
fi
|
||||
bwrap --dev-bind / / \
|
||||
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--ro-bind "$CURRENT_DIR/usr/lib64" /lib \
|
||||
--ro-bind "$CURRENT_DIR/usr" /usr \
|
||||
--bind "$CURRENT_DIR/usr/lib" /lib \
|
||||
--bind "$CURRENT_DIR/usr" /usr \
|
||||
--ro-bind /usr/share /usr/share \
|
||||
--ro-bind /usr/bin /usr/bin \
|
||||
--ro-bind /usr/sbin /usr/sbin \
|
||||
$systemNeedCommand \
|
||||
-- "$@"
|
||||
|
@ -2421,7 +2421,7 @@ def CheckWine():
|
||||
try:
|
||||
canUseWineOld = canUseWine[:]
|
||||
for i in canUseWineOld:
|
||||
if os.path.exists(f"{programPath}/WineLib/usr/lib/ld-linux-x86-64.so.2"):
|
||||
if os.path.exists(f"{programPath}/WineLib/usr"):
|
||||
wine[f"使用运行器的运行库运行 {i}"] = f"bash '{programPath}/WineLib/run.sh' {wine[i]}"
|
||||
canUseWine.append(f"使用运行器的运行库运行 {i}")
|
||||
untipsWine.append(f"使用运行器的运行库运行 {i}")
|
||||
@ -3058,12 +3058,30 @@ installLib.addAction(runnerlibinfo)
|
||||
installLib.addAction(statusRunnerLib)
|
||||
installLib.addAction(installRunnerLib)
|
||||
installLib.addAction(removeRunnerLib)
|
||||
diyRunnerLib = installLib.addMenu("定制运行库")
|
||||
diyRunnerLib.setDisabled(True)
|
||||
installRunnerLib.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/WineLib/install.sh'"]).start())
|
||||
removeRunnerLib.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/WineLib/remove.sh'"]).start())
|
||||
if os.path.exists(f"{programPath}/WineLib/usr/lib/ld-linux-x86-64.so.2"):
|
||||
if os.path.exists(f"{programPath}/WineLib/usr"):
|
||||
installRunnerLib.setDisabled(True)
|
||||
removeRunnerLib.setEnabled(True)
|
||||
diyRunnerLib.setEnabled(True)
|
||||
statusRunnerLib.setText("当前状态:已安装")
|
||||
libPathList = []
|
||||
for libPath in [f"{programPath}/WineLib/usr/lib", f"{programPath}/WineLib/usr/lib64"]:
|
||||
for i in os.listdir(libPath):
|
||||
if not os.path.exists(f"{libPath}/{i}/libc.so.6"):
|
||||
continue
|
||||
if not os.path.isdir(f"{libPath}/{i}"):
|
||||
try:
|
||||
if not os.path.getsize(f"{libPath}/{i}"):
|
||||
continue
|
||||
except:
|
||||
continue
|
||||
libPathList.append(f"{libPath}/{i}")
|
||||
else:
|
||||
libPathList.append(f"{libPath}/{i}/")
|
||||
print(libPathList)
|
||||
if os.path.exists(f"{programPath}/InstallRuntime"):
|
||||
installLib.addSeparator()
|
||||
systemalllibinfo = QtWidgets.QAction("全局运行库(与其他运行库以及部分兼容层冲突)")
|
||||
|
Loading…
x
Reference in New Issue
Block a user