Inno setup Inno设置-如何识别源目录的USB驱动器

Inno setup Inno设置-如何识别源目录的USB驱动器,inno-setup,drive,Inno Setup,Drive,我希望Inno安装编译器自动检测USB驱动器号,并将其用作安装程序文件的源路径 但我不知道如何准确识别正确的驱动器。什么是正确的SourceDir= 源驱动器不应是固定驱动器。Inno安装程序无法自行完成此操作。但您可以从Inno Setup预处理器调用一个简单的PowerShell代码 根据,以下内容将把SourceDir设置为第一个可移动驱动器(不一定是USB驱动器,也不使用USB硬盘驱动器)。如果您确实想要第一个USB驱动器,请尝试 非常感谢你的帮助,成功了。你在堆栈溢出方面做得很好@ma

我希望Inno安装编译器自动检测USB驱动器号,并将其用作安装程序文件的源路径

但我不知道如何准确识别正确的驱动器。什么是正确的
SourceDir=


源驱动器不应是固定驱动器。

Inno安装程序无法自行完成此操作。但您可以从Inno Setup预处理器调用一个简单的PowerShell代码

根据,以下内容将把
SourceDir
设置为第一个可移动驱动器(不一定是USB驱动器,也不使用USB硬盘驱动器)。如果您确实想要第一个USB驱动器,请尝试


非常感谢你的帮助,成功了。你在堆栈溢出方面做得很好@martin。你在我的项目上真的帮了我很多:)
#define GetUsbDrive() \
  Local[0] = AddBackslash(GetEnv("TEMP")) + "usb_drive.txt", \
  Local[1] = \
    "-ExecutionPolicy Unrestricted -Command """ + \
    "$drive = @(Get-WmiObject Win32_Volume -Filter DriveType='2'); " + \
    "if ($drive) { $drive = $drive[0].DriveLetter }; " + \
    "Set-Content -Path '" + Local[0] + "' -NoNewline -Value $drive " + \
    """", \
  Exec("powershell.exe", Local[1], SourcePath, , SW_HIDE), \
  Local[2] = FileOpen(Local[0]), \
  Local[3] = FileRead(Local[2]), \
  FileClose(Local[2]), \
  DeleteFileNow(Local[0]), \
  Local[3]

#define UsbDrive GetUsbDrive()
#if Len(UsbDrive) == 0
#error No USB drive found
#endif

[Setup]
SourceDir={#UsbDrive}