如何在wix刻录ExePackage中运行vbscript?

时间:2016-10-04 13:02:41

标签: batch-file vbscript wix burn

在我安装了几个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,但是我打开这个问题,因为它不是一个非常好的解决方案。

0 个答案:

没有答案