我正在尝试使用 WiX 创建一个安装程序,该安装程序有一个通过 UNC 路径写入网络驱动器的步骤,但无论我做什么,我都会遇到错误“无法访问网络位置”:
有问题的网络位置存在并且可供安装程序进程访问。
这是我尝试过的:
SetDirectory
指定相关目录:<SetDirectory Action="SetInstallDir" Id="INSTALLFOLDER" Value="\\tsclient\Z\VMSharedFolder\Docs">INSTALLFOLDER=""</SetDirectory>
msiexec /i Wixv3.msi INSTALLFOLDER="\\tsclient\Z\VMSharedFolder"
MYPERSONALFOLDER
);注意我还尝试将此目录根植到众所周知的上一级文件夹,如此处建议:<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<Directory Id="INSTALLFOLDER" Name="WixV3">
<Component Id="test" Guid="95AB91F2-7DFE-4D1C-8114-BF1D07AD440C" Win64="yes" >
<File Id="test.txt" Source="Files\test.txt" KeyPath="yes" Checksum="no"/>
</Component>
</Directory>
</Directory>
<Directory Id="MYPERSONALFOLDER" Name="WillBeReplaced"/>
</Directory>
<SetDirectory Action="SetInstallDir" Id="MYPERSONALFOLDER" Value="\\tsclient\Z\VMSharedFolder\Docs">MYPERSONALFOLDER=""</SetDirectory>
WIXUI_DONTVALIDATEPATH
:msiexec /i Wixv3.msi WIXUI_DONTVALIDATEPATH="1"
WIXUI_DONTVALIDATEPATH
:<Property Id="WIXUI_DONTVALIDATEPATH" Value="1" />
My Documents
。请注意,这是我的应用程序的实际生产场景,也是首先出现此问题的原因 - 我们的一些用户在网络驱动器上拥有其 My Documents
文件夹。<Directory Id="PersonalFolder" Name="UserHomeDocuments"/>
<StandardDirectory Id="PersonalFolder" />
但是以上解决方案都不起作用;它们都失败并出现与上面相同的错误消息。这让我得出结论,WiX 或 MSI 安装程序通常在 UNC 路径/网络驱动器方面存在问题。这让我更加困惑,因为这似乎是一个受支持的场景(通过在互联网上搜索)。
有人能告诉我这里到底发生了什么以及根本的问题是什么吗?正如我上面提到的,我无法避免写入网络驱动器的需要,因为我们有一个用例。
我在尝试访问网络映射驱动器时遇到了类似的问题。该问题源于网络位置的映射方式。以下是情况的细分以及我为解决该问题所采取的步骤:
初始映射:网络位置最初映射为 “user1”使用“app1”。
访问尝试:当我尝试使用以下命令访问同一位置时 “app2”以“admin”身份运行,我遇到了可访问性问题。
故障排除:为了诊断问题,我尝试访问 通过 PowerShell 进行网络定位,均以“user1”身份运行 “行政”。有趣的是,只有 PowerShell 实例运行为 “user1”能够访问该位置。
解决方案:为了缓解访问问题,我将“app2”作为“user1”运行, 成功绕过了这个问题。
根据此经验,网络驱动器似乎应该以确保所有用户均可访问的方式进行映射,或者应将 WIX 安装程序配置为以有权访问该位置的用户身份运行。