@mcesystems/apple-kit 1.0.40 → 1.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +17 -4
- package/dist/index.js.map +2 -2
- package/dist/index.mjs +17 -4
- package/dist/index.mjs.map +2 -2
- package/dist/types/logic/actions/install.d.ts.map +1 -1
- package/dist/types/logic/actions/pair.d.ts.map +1 -1
- package/dist/types/logic/actions/restore.d.ts +36 -0
- package/dist/types/logic/actions/restore.d.ts.map +1 -0
- package/package.json +1 -1
- package/prebuilt/libimobiledevice-windows-v1.0.0.tar.gz +0 -0
- package/scripts/build-windows.sh.template +222 -166
- package/scripts/export-resources.mts +859 -856
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pair.d.ts","sourceRoot":"","sources":["../../../../src/logic/actions/pair.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAa7D;AAED,wBAAsB,WAAW,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,SAAQ,EACf,iBAAiB,CAAC,EAAE,MAAM,IAAI,GAC5B,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"pair.d.ts","sourceRoot":"","sources":["../../../../src/logic/actions/pair.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAa7D;AAED,wBAAsB,WAAW,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,SAAQ,EACf,iBAAiB,CAAC,EAAE,MAAM,IAAI,GAC5B,OAAO,CAAC,OAAO,CAAC,CAmClB;AAED,wBAAsB,cAAc,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,SAAS,EAChB,YAAY,SAAO,GACjB,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBzD;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAa3D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface RestoreOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Timeout in milliseconds (default: 300000 = 5 minutes)
|
|
4
|
+
* Restore operations can take a long time, especially with firmware download
|
|
5
|
+
*/
|
|
6
|
+
timeout?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Path to IPSW file. If not provided, will restore to latest available firmware
|
|
9
|
+
*/
|
|
10
|
+
ipswPath?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Use erase mode instead of full restore (faster, but may not work on all devices)
|
|
13
|
+
*/
|
|
14
|
+
erase?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface RestoreResult {
|
|
17
|
+
success: boolean;
|
|
18
|
+
stdout: string;
|
|
19
|
+
stderr: string;
|
|
20
|
+
exitCode: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Restore an iOS device using idevicerestore
|
|
24
|
+
*
|
|
25
|
+
* This will restore the device to factory settings. If an IPSW path is provided,
|
|
26
|
+
* it will restore to that firmware version. Otherwise, it will restore to the
|
|
27
|
+
* latest available firmware for the device.
|
|
28
|
+
*
|
|
29
|
+
* WARNING: This operation will erase all data on the device!
|
|
30
|
+
*
|
|
31
|
+
* @param udid Device UDID
|
|
32
|
+
* @param options Restore options
|
|
33
|
+
* @returns Restore result
|
|
34
|
+
*/
|
|
35
|
+
export declare function restoreDevice(udid: string, options?: RestoreOptions): Promise<RestoreResult>;
|
|
36
|
+
//# sourceMappingURL=restore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../../../src/logic/actions/restore.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB;AAsHD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC,aAAa,CAAC,CA0ExB"}
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -1,166 +1,222 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# =============================================================================
|
|
3
|
-
# libimobiledevice Windows Build Script
|
|
4
|
-
# =============================================================================
|
|
5
|
-
#
|
|
6
|
-
# This script builds libimobiledevice and related tools from source using
|
|
7
|
-
# MSYS2/MinGW environment.
|
|
8
|
-
#
|
|
9
|
-
# Prerequisites:
|
|
10
|
-
# 1. MSYS2 installed (https://www.msys2.org/)
|
|
11
|
-
# 2. Run this script from MSYS2 MinGW 64-bit shell
|
|
12
|
-
# 3. Required packages installed (see below)
|
|
13
|
-
#
|
|
14
|
-
# To install required packages, run in MSYS2 MinGW 64-bit shell:
|
|
15
|
-
# pacman -S base-devel git mingw-w64-x86_64-gcc make libtool autoconf automake-wrapper
|
|
16
|
-
#
|
|
17
|
-
# Usage:
|
|
18
|
-
# bash build-windows.sh
|
|
19
|
-
#
|
|
20
|
-
# =============================================================================
|
|
21
|
-
|
|
22
|
-
set -e
|
|
23
|
-
|
|
24
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
25
|
-
TARGET_DIR="{{TARGET_DIR}}"
|
|
26
|
-
BUILD_DIR="$SCRIPT_DIR/limd-build"
|
|
27
|
-
|
|
28
|
-
echo "=== libimobiledevice Windows Build ==="
|
|
29
|
-
echo ""
|
|
30
|
-
echo "Target directory: $TARGET_DIR"
|
|
31
|
-
echo "Build directory: $BUILD_DIR"
|
|
32
|
-
echo ""
|
|
33
|
-
|
|
34
|
-
# Check if running in MinGW environment
|
|
35
|
-
if [[ -z "$MSYSTEM" ]] || [[ "$MSYSTEM" != "MINGW64" ]]; then
|
|
36
|
-
echo "Error: This script must be run from MSYS2 MinGW 64-bit shell"
|
|
37
|
-
echo "Open 'MSYS2 MinGW 64-bit' from Start menu and run this script again."
|
|
38
|
-
exit 1
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
# Check for required tools
|
|
42
|
-
echo "Checking prerequisites..."
|
|
43
|
-
for cmd in gcc make git autoconf automake libtool; do
|
|
44
|
-
if ! command -v $cmd &> /dev/null; then
|
|
45
|
-
echo "Error: $cmd not found. Please install required packages:"
|
|
46
|
-
echo " pacman -S base-devel git mingw-w64-x86_64-gcc make libtool autoconf automake-wrapper"
|
|
47
|
-
exit 1
|
|
48
|
-
fi
|
|
49
|
-
done
|
|
50
|
-
echo "✓ All prerequisites found"
|
|
51
|
-
echo ""
|
|
52
|
-
|
|
53
|
-
# Create build directory
|
|
54
|
-
mkdir -p "$BUILD_DIR"
|
|
55
|
-
cd "$BUILD_DIR"
|
|
56
|
-
|
|
57
|
-
# Download and run the official build script
|
|
58
|
-
echo "Downloading libimobiledevice build script..."
|
|
59
|
-
curl -Ls -o limd-build-msys2.sh https://is.gd/limdmsys2
|
|
60
|
-
|
|
61
|
-
echo ""
|
|
62
|
-
echo "Running libimobiledevice build script..."
|
|
63
|
-
echo "(This may take 10-30 minutes depending on your system)"
|
|
64
|
-
echo ""
|
|
65
|
-
|
|
66
|
-
bash ./limd-build-msys2.sh
|
|
67
|
-
|
|
68
|
-
# After build, copy the binaries to target directory
|
|
69
|
-
echo ""
|
|
70
|
-
echo "Copying binaries to target directory..."
|
|
71
|
-
|
|
72
|
-
mkdir -p "$TARGET_DIR"
|
|
73
|
-
|
|
74
|
-
# The build script installs to /mingw64 by default
|
|
75
|
-
MINGW_BIN="/mingw64/bin"
|
|
76
|
-
|
|
77
|
-
TOOLS=(
|
|
78
|
-
"idevice_id.exe"
|
|
79
|
-
"ideviceinfo.exe"
|
|
80
|
-
"idevicepair.exe"
|
|
81
|
-
"idevicename.exe"
|
|
82
|
-
"idevicedebug.exe"
|
|
83
|
-
"ideviceinstaller.exe"
|
|
84
|
-
"iproxy.exe"
|
|
85
|
-
"ideviceactivation.exe"
|
|
86
|
-
"idevicesyslog.exe"
|
|
87
|
-
"idevicescreenshot.exe"
|
|
88
|
-
"idevicediagnostics.exe"
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
echo "
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
echo "
|
|
165
|
-
echo "
|
|
166
|
-
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# libimobiledevice Windows Build Script
|
|
4
|
+
# =============================================================================
|
|
5
|
+
#
|
|
6
|
+
# This script builds libimobiledevice and related tools from source using
|
|
7
|
+
# MSYS2/MinGW environment.
|
|
8
|
+
#
|
|
9
|
+
# Prerequisites:
|
|
10
|
+
# 1. MSYS2 installed (https://www.msys2.org/)
|
|
11
|
+
# 2. Run this script from MSYS2 MinGW 64-bit shell
|
|
12
|
+
# 3. Required packages installed (see below)
|
|
13
|
+
#
|
|
14
|
+
# To install required packages, run in MSYS2 MinGW 64-bit shell:
|
|
15
|
+
# pacman -S base-devel git mingw-w64-x86_64-gcc make libtool autoconf automake-wrapper
|
|
16
|
+
#
|
|
17
|
+
# Usage:
|
|
18
|
+
# bash build-windows.sh
|
|
19
|
+
#
|
|
20
|
+
# =============================================================================
|
|
21
|
+
|
|
22
|
+
set -e
|
|
23
|
+
|
|
24
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
25
|
+
TARGET_DIR="{{TARGET_DIR}}"
|
|
26
|
+
BUILD_DIR="$SCRIPT_DIR/limd-build"
|
|
27
|
+
|
|
28
|
+
echo "=== libimobiledevice Windows Build ==="
|
|
29
|
+
echo ""
|
|
30
|
+
echo "Target directory: $TARGET_DIR"
|
|
31
|
+
echo "Build directory: $BUILD_DIR"
|
|
32
|
+
echo ""
|
|
33
|
+
|
|
34
|
+
# Check if running in MinGW environment
|
|
35
|
+
if [[ -z "$MSYSTEM" ]] || [[ "$MSYSTEM" != "MINGW64" ]]; then
|
|
36
|
+
echo "Error: This script must be run from MSYS2 MinGW 64-bit shell"
|
|
37
|
+
echo "Open 'MSYS2 MinGW 64-bit' from Start menu and run this script again."
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Check for required tools
|
|
42
|
+
echo "Checking prerequisites..."
|
|
43
|
+
for cmd in gcc make git autoconf automake libtool; do
|
|
44
|
+
if ! command -v $cmd &> /dev/null; then
|
|
45
|
+
echo "Error: $cmd not found. Please install required packages:"
|
|
46
|
+
echo " pacman -S base-devel git mingw-w64-x86_64-gcc make libtool autoconf automake-wrapper"
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
done
|
|
50
|
+
echo "✓ All prerequisites found"
|
|
51
|
+
echo ""
|
|
52
|
+
|
|
53
|
+
# Create build directory
|
|
54
|
+
mkdir -p "$BUILD_DIR"
|
|
55
|
+
cd "$BUILD_DIR"
|
|
56
|
+
|
|
57
|
+
# Download and run the official build script
|
|
58
|
+
echo "Downloading libimobiledevice build script..."
|
|
59
|
+
curl -Ls -o limd-build-msys2.sh https://is.gd/limdmsys2
|
|
60
|
+
|
|
61
|
+
echo ""
|
|
62
|
+
echo "Running libimobiledevice build script..."
|
|
63
|
+
echo "(This may take 10-30 minutes depending on your system)"
|
|
64
|
+
echo ""
|
|
65
|
+
|
|
66
|
+
bash ./limd-build-msys2.sh
|
|
67
|
+
|
|
68
|
+
# After build, copy the binaries to target directory
|
|
69
|
+
echo ""
|
|
70
|
+
echo "Copying binaries to target directory..."
|
|
71
|
+
|
|
72
|
+
mkdir -p "$TARGET_DIR"
|
|
73
|
+
|
|
74
|
+
# The build script installs to /mingw64 by default
|
|
75
|
+
MINGW_BIN="/mingw64/bin"
|
|
76
|
+
|
|
77
|
+
TOOLS=(
|
|
78
|
+
"idevice_id.exe"
|
|
79
|
+
"ideviceinfo.exe"
|
|
80
|
+
"idevicepair.exe"
|
|
81
|
+
"idevicename.exe"
|
|
82
|
+
"idevicedebug.exe"
|
|
83
|
+
"ideviceinstaller.exe"
|
|
84
|
+
"iproxy.exe"
|
|
85
|
+
"ideviceactivation.exe"
|
|
86
|
+
"idevicesyslog.exe"
|
|
87
|
+
"idevicescreenshot.exe"
|
|
88
|
+
"idevicediagnostics.exe"
|
|
89
|
+
"idevicerestore.exe"
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
for tool in "${TOOLS[@]}"; do
|
|
93
|
+
if [[ -f "$MINGW_BIN/$tool" ]]; then
|
|
94
|
+
cp "$MINGW_BIN/$tool" "$TARGET_DIR/"
|
|
95
|
+
echo "✓ Copied $tool"
|
|
96
|
+
else
|
|
97
|
+
echo "- Skipping $tool (not found)"
|
|
98
|
+
fi
|
|
99
|
+
done
|
|
100
|
+
|
|
101
|
+
# Copy required DLLs by discovering dependencies
|
|
102
|
+
echo ""
|
|
103
|
+
echo "Discovering and copying required DLLs..."
|
|
104
|
+
|
|
105
|
+
# Function to recursively find all DLL dependencies
|
|
106
|
+
find_dll_deps() {
|
|
107
|
+
local file="$1"
|
|
108
|
+
ldd "$file" 2>/dev/null | grep '/mingw64' | awk '{print $3}' | sort -u
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# Collect all unique DLLs needed by all tools
|
|
112
|
+
ALL_DLLS=""
|
|
113
|
+
for tool in "${TOOLS[@]}"; do
|
|
114
|
+
if [[ -f "$TARGET_DIR/$tool" ]]; then
|
|
115
|
+
TOOL_DLLS=$(find_dll_deps "$TARGET_DIR/$tool")
|
|
116
|
+
ALL_DLLS="$ALL_DLLS $TOOL_DLLS"
|
|
117
|
+
fi
|
|
118
|
+
done
|
|
119
|
+
|
|
120
|
+
# Also check dependencies of the DLLs themselves (transitive deps)
|
|
121
|
+
# Do multiple passes to ensure we get all nested dependencies
|
|
122
|
+
for pass in {1..3}; do
|
|
123
|
+
for dll_path in $ALL_DLLS; do
|
|
124
|
+
if [[ -f "$dll_path" ]]; then
|
|
125
|
+
NESTED_DLLS=$(find_dll_deps "$dll_path")
|
|
126
|
+
ALL_DLLS="$ALL_DLLS $NESTED_DLLS"
|
|
127
|
+
fi
|
|
128
|
+
done
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
# Get unique list
|
|
132
|
+
UNIQUE_DLLS=$(echo "$ALL_DLLS" | tr ' ' '\n' | sort -u | grep -v '^$')
|
|
133
|
+
|
|
134
|
+
# Copy each DLL
|
|
135
|
+
for dll_path in $UNIQUE_DLLS; do
|
|
136
|
+
if [[ -f "$dll_path" ]]; then
|
|
137
|
+
dll_name=$(basename "$dll_path")
|
|
138
|
+
cp "$dll_path" "$TARGET_DIR/"
|
|
139
|
+
echo "✓ Copied $dll_name"
|
|
140
|
+
fi
|
|
141
|
+
done
|
|
142
|
+
|
|
143
|
+
# Specifically check for idevicerestore dependencies (libirecovery, libidevicerestore)
|
|
144
|
+
if [[ -f "$TARGET_DIR/idevicerestore.exe" ]]; then
|
|
145
|
+
echo ""
|
|
146
|
+
echo "Checking idevicerestore-specific dependencies..."
|
|
147
|
+
|
|
148
|
+
# Look for libirecovery and libidevicerestore DLLs
|
|
149
|
+
IRECOVERY_DLLS=$(find "$MINGW_BIN" -name "libirecovery*.dll" 2>/dev/null || true)
|
|
150
|
+
IDEVICERESTORE_DLLS=$(find "$MINGW_BIN" -name "libidevicerestore*.dll" 2>/dev/null || true)
|
|
151
|
+
|
|
152
|
+
for dll in $IRECOVERY_DLLS $IDEVICERESTORE_DLLS; do
|
|
153
|
+
if [[ -f "$dll" ]]; then
|
|
154
|
+
dll_name=$(basename "$dll")
|
|
155
|
+
if [[ ! -f "$TARGET_DIR/$dll_name" ]]; then
|
|
156
|
+
cp "$dll" "$TARGET_DIR/"
|
|
157
|
+
echo "✓ Copied $dll_name (idevicerestore dependency)"
|
|
158
|
+
fi
|
|
159
|
+
fi
|
|
160
|
+
done
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# Explicitly copy all libimobiledevice core libraries
|
|
164
|
+
echo ""
|
|
165
|
+
echo "Copying libimobiledevice core libraries..."
|
|
166
|
+
CORE_LIBS=(
|
|
167
|
+
"libimobiledevice-1.0.dll"
|
|
168
|
+
"libimobiledevice-glue-1.0.dll"
|
|
169
|
+
"libusbmuxd-2.0.dll"
|
|
170
|
+
"libplist-2.0.dll"
|
|
171
|
+
"libirecovery-1.0.dll"
|
|
172
|
+
"libidevicerestore-1.0.dll"
|
|
173
|
+
"libideviceactivation-1.0.dll"
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
for lib in "${CORE_LIBS[@]}"; do
|
|
177
|
+
if [[ -f "$MINGW_BIN/$lib" ]] && [[ ! -f "$TARGET_DIR/$lib" ]]; then
|
|
178
|
+
cp "$MINGW_BIN/$lib" "$TARGET_DIR/"
|
|
179
|
+
echo "✓ Copied $lib (core library)"
|
|
180
|
+
fi
|
|
181
|
+
done
|
|
182
|
+
|
|
183
|
+
# Also copy these common runtime DLLs that might not show up in ldd
|
|
184
|
+
RUNTIME_DLLS=(
|
|
185
|
+
"libgcc_s_seh-1.dll"
|
|
186
|
+
"libwinpthread-1.dll"
|
|
187
|
+
"libstdc++-6.dll"
|
|
188
|
+
"libssl-3-x64.dll"
|
|
189
|
+
"libcrypto-3-x64.dll"
|
|
190
|
+
"liblzma-5.dll"
|
|
191
|
+
"libzstd.dll"
|
|
192
|
+
"zlib1.dll"
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
echo ""
|
|
196
|
+
echo "Copying runtime DLLs..."
|
|
197
|
+
for dll in "${RUNTIME_DLLS[@]}"; do
|
|
198
|
+
if [[ -f "$MINGW_BIN/$dll" ]] && [[ ! -f "$TARGET_DIR/$dll" ]]; then
|
|
199
|
+
cp "$MINGW_BIN/$dll" "$TARGET_DIR/"
|
|
200
|
+
echo "✓ Copied $dll"
|
|
201
|
+
fi
|
|
202
|
+
done
|
|
203
|
+
|
|
204
|
+
# List all DLLs that were copied for verification
|
|
205
|
+
echo ""
|
|
206
|
+
echo "=== Summary of copied libraries ==="
|
|
207
|
+
echo "Core libimobiledevice libraries:"
|
|
208
|
+
for lib in "${CORE_LIBS[@]}"; do
|
|
209
|
+
if [[ -f "$TARGET_DIR/$lib" ]]; then
|
|
210
|
+
echo " ✓ $lib"
|
|
211
|
+
else
|
|
212
|
+
echo " ✗ $lib (missing)"
|
|
213
|
+
fi
|
|
214
|
+
done
|
|
215
|
+
|
|
216
|
+
echo ""
|
|
217
|
+
echo "=== Build Complete ==="
|
|
218
|
+
echo "Windows binaries exported to: $TARGET_DIR"
|
|
219
|
+
echo ""
|
|
220
|
+
echo "Note: On Windows, iTunes or Apple Mobile Device Support must be installed"
|
|
221
|
+
echo "for USB communication to work."
|
|
222
|
+
|