我在使用 InstallShield 创建的安装包 MSI 中执行的脚本的上下文中。我执行以下脚本:
Set wshShell = CreateObject( "WScript.Shell" )
User = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )
MsgBox "User: " & User
' The parameters are received through MSI parameters
' msiexec /I MyMSI_x64.msi configFileSrc="Z:\MyFolder\FileToCopy.txt" configFolderDst="c:\temp\"
' Testing parameters
Dim configFileSrc, configFolderDst
configFileSrc = "Z:\MyFolder\FileToCopy.txt"
configFolderDst = "c:\temp\"
' **********************************************************************
' Copy file to destination folder
' **********************************************************************
if(configFileSrc <> "") Then
call copyFile(configFileSrc, configFolderDst)
End if
' **********************************************************************
' Function to copy file
' **********************************************************************
Sub CopyFile(SourceFile, DestinationFile)
Set fso = CreateObject("Scripting.FileSystemObject")
If not fso.FileExists(SourceFile) Then
MsgBox "The file " & SourceFile & " is not found and will therefore not be copied to destination folder.", vbExclamation, "Parameter file not found"
Exit Sub
End If
...
当从已安装的驱动器执行时,FileExists 总是返回 false。当脚本在本地执行时(替换实际作为参数提供的 configFileSrc),脚本工作正常。我很确定 InstallShield 使用机器的管理员本地帐户,该帐户可能对已安装的驱动器没有权限,但我不知道如何检查。我试图显示当前用户 strUserName 但该框为空。任何想法?