在我安装了几个MSI
之后,我需要在xml文件中进行一些更改。为此我正在考虑使用带有%*
技巧的bat文件调用vbscript。我的问题是我收到0X80070001
错误,但是当我手动运行脚本时,它运行正常。
链中的代码:
<ExePackage
Id="CultureChange"
SourceFile="run.bat"
DisplayName="Changing Default Language"
InstallCommand='cscript Script.vbs "[DefaultCulture]"'
PerMachine="yes"
Cache="yes"
Compressed="yes">
<Payload SourceFile="Script.vbs"/>
</ExePackage>
我也尝试使用cscript
调用C:\windows\SysNative\cscript.exe
但结果相同。
日志:
Applying execute package: CultureChange, action: Install, path: C:\ProgramData\Package Cache\1608BB75347CD8C40187E5F3C0A969ED73A98D51\run.bat, arguments: '"C:\ProgramData\Package Cache\1608BB75347CD8C40187E5F3C0A969ED73A98D51\run.bat" C:\windows\SysNative\cscript.exe Script.vbs "it-IT"'
Error 0x80070001: Process returned error: 0x1
Error 0x80070001: Failed to execute EXE package.
Error 0x80070001: Failed to configure per-machine EXE package.
另请注意,MSI无法修改,因此我无法在xml文件中进行更改。
我提供了一个适用于Windows 8.1的解决方案但是当我在Windows 7上测试时,它仍然给了我同样的错误。 这是代码:
@echo off
pushd %~dp0
C:\Windows\SysWOW64\cmd.exe /c cscript Script.vbs "%1"
我还找到了一些关于错误的文档:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd319335(v=vs.85).aspx
对已打开的设备上的资源发出写入请求 在读取模式下使用IPortableDeviceResources :: GetStream或读取 请求已为为Write或Create打开的资源。
我观看了vbscript文件,但从未访问过该文件。 无论如何,我在c#中编辑了我的托管引导程序中的xml文件而没有尝试运行vbscript,但是我打开这个问题,因为它不是一个非常好的解决方案。