-1

我在使用 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 但该框为空。任何想法?

4

1 回答 1

0

映射的驱动器是每个用户令牌。管理员有两个令牌。因此,以管理员身份运行意味着它无法以普通用户身份访问映射的驱动器。

使用 UNC 路径。\\server\sharename\folder\file.ext.

于 2020-11-17T06:45:00.117 回答