在windows上安装MTP设备



我正试图在运行Windows 10的机器上安装android设备,以便通过Java应用程序访问文件。我知道大家的共识是应该使用WebDav或FTP服务器,但如果可能的话,我希望避免这种情况。我花了很多周的时间研究这个问题,最终决定接触堆栈溢出的聪明人。

要安装MTP设备,我们需要一个类似于fuse for Unix的文件系统库。对于windows,两个明显的选择是:

  1. dokany
  2. winfsp

据我所知,访问MTP设备有两个主要的API/库:

  1. libmtp
  2. WPD

我已经成功地使用msys2/Mingw64为windows编译了libmtp。

在我看来,我应该使用像mtpmount这样的应用程序,或者尝试使用像dokany这样的文件系统库而不是fuse来移植像简单mtpfs这样的linux应用程序。

然而,当我尝试使用mtp-mount(它使用WPD API(时,它不会列出任何设备,当我使用提供的示例测试libMTP时,我会得到这样的错误:

libusb_open() failed!: No error
libmtp version: 1.1.18
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 1, dev 10
Attempting to connect device(s)
OK.
LIBMTP PANIC: Unable to initialize device
Unable to open raw device 0

我不知道该怎么办。如有任何帮助,我们将不胜感激。

更新

我让libmtp使用libusbk开发工具包工作。具体来说,我使用libusbK-inf向导为我的设备创建驱动程序。我测试了libusbk驱动程序和WinUSB驱动程序,发现它们都解决了我的问题。此外,我从源代码构建了mtpmount,并发现它也可以工作。

我在寻找非常相似的东西时发现了你的问题:如何在Windows 10上使用Python 3与MTP(Garmin Alpha 200i手持GPS单元,而不是手机(交谈。

很高兴看到你找到了解决方案!我使用您的潜在客户(特别是mtpmount(为我的问题找到了部分解决方案,我想知道它是否为您的问题提供了另一个替代解决方案。

我还想知道,自从你找到解决方案以来,你是否发现了更多关于mtpmount的信息。

根据你的线索,我转到了mtpmount链接。我能够通过以下方式获得windows命令行的完整解决方案:1(下载并运行dokany的最新.msi,确保选择所有组件进行安装,然后2(下载mtpmount的最新.exe(它不是安装程序,而是实际的mtpmount可执行文件(。这几乎是一个平稳的安装过程,正如人们在这个领域所希望的那样!向这两个项目的开发人员致敬!

与我发现的mtpmount文档相比,唯一的区别是:1(文档中的可执行文件名称与下载的可执行程序名称不完全匹配-当然没什么大不了的,2(磅号必须用双引号-至少在powershell中是这样,3(好的是:你可以用相同的ID#语法指定驱动器号:

PS C:UserscaverDownloads> .mtpmount-x64.exe list available
This is mtpmount, version 19.8.0 from commit 43033d6
This program comes with NO WARRANTY. Usage only at your own risk.
Available Connections and Storage Media:
Connection Elements: Contains 1 storages that can be mounted
|-- Storage E: [ID #0]
Connection My Passport: Contains 1 storages that can be mounted
|-- Storage F: [ID #1]
Connection Alpha 200i: Contains 2 storages that can be mounted
|-- Storage Internal Storage [ID #3]
|-- Storage Memory Card [ID #4]
Use mount command to make one of them a windows removable drive
PS C:UserscaverDownloads> .mtpmount-x64.exe mount "#3" h:
This is mtpmount, version 19.8.0 from commit 43033d6
This program comes with NO WARRANTY. Usage only at your own risk.
Drive H: is now Alpha 200iInternal Storage. Don't forget to unmount the drive (using unmount command) before disconnecting your device
PS C:UserscaverDownloads>

然后进行驱动器访问工作。然后你运行这个卸载:

PS C:UserscaverDownloads> .mtpmount-x64.exe unmount "#3"
This is mtpmount, version 19.8.0 from commit 43033d6
This program comes with NO WARRANTY. Usage only at your own risk.
Alpha 200iInternal Storage has been unmounted successfully.
Syncing Alpha 200i. DO NOT UNPLUG THIS DEVICE YET!

终端在此暂停约5秒

Cache OK
All content synced to Alpha 200i. You may now unplug this device.
PS C:UserscaverDownloads>

我的问题:

  1. dokany是否通过其所有驱动器的代理运行所有文件系统操作,从而影响文件系统的其余访问?如果是这样的话,在dokany中出现未发现的错误时,这是否会减缓速度或增加另一种可能的文件系统损坏途径?

  2. 我们在无法可靠控制拔出时间的环境中使用Garmin GPS单元。换句话说,我们确实需要能够在传输完成后立即拔下插头,而无需等待卸载过程中的怀孕暂停。关于使用mtpmount安装的MTP设备的热插拔,有什么说法?在不运行"mtpmount unmount"的情况下拔下插头,以及在怀孕暂停期间拔下插头?在这两个选项中,似乎不运行卸载会更安全——你会觉得5秒的同步是一个非常糟糕的时间。。。对于USB大容量存储设备,我知道在物理拔出之前,总是建议先从Windows中正确弹出设备,但我们从未遇到过因USB大容量储存模式Garmin GPSs的热插拔而导致的问题。

  3. 你有没有把这一切变成一个交钥匙的安装程序解决方案,即一个整体安装程序,安装dokany,然后安装mtpmount,然后还安装你的应用程序的其余部分?我不熟悉像Nullsoft这样的安装程序,我肯定计划在那里进行RTF,但只是想知道你是否在这些线路上遇到过任何特定的问题。

感谢并祝贺您的工作!

最新更新