使用Wix自定义操作复制命令不起作用

Son*_*hja 3 wix wix3.5 wix3.6 wix3.7

我有以下内容CustomAction:

<CustomAction Id="CopyToSystem32" ExeCommand="copy /y 64bits.txt C:\Windows\System32" Directory="INSTALLFOLDER" Impersonate="no" Execute="deferred" Return="asyncWait" />

<InstallExecuteSequence>
  <Custom Action="CopyToSystem32" After="InstallFiles" >VersionNT64</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

因此,当它检测到64位操作系统时,它会将文件复制到System32文件夹.如果我用.bat文件执行它,它工作正常.但我更喜欢它是一个批处理命令.

日志说明如下:

MSI (s) (74:AC) [10:08:33:473]: Executing op: ActionStart(Name=CopyToSystem32,,)
Action 10:08:33: CopyToSystem32. 
MSI (s) (74:AC) [10:08:33:473]: Executing op:         CustomActionSchedule(Action=CopyToSystem32,ActionType=3234,Source=C:\Program Files    (x86)\SetupProject\,Target=copy /y 64bits.txt C:\Windows\System32,)
MSI (s) (74:AC) [10:08:33:474]: Executing op:     ActionStart(Name=RegisterProduct,Description=Registering product,Template=[1])
Action 10:08:33: RegisterProduct. Registering product
MSI (s) (74:AC) [10:08:33:474]: Executing op: ChangeMedia(,MediaPrompt=Please insert the disk:     ,MediaCabinet=1\cab1.cab,BytesPerTick=0,CopierType=1,,,SignatureRequired=0,,,IsFirstPhysicalMedia=1)
MSI (s) (74:AC) [10:08:33:474]: Executing op:     DatabaseCopy(DatabasePath=C:\Windows\Installer\32ea43.msi,ProductCode={0C013216-61FB-4283-AF0A-    6CB264019F5B},,,)
MSI (s) (74:AC) [10:08:33:474]: Note: 1: 1402 2:     UNKNOWN\Products\612310C0BF163824FAA0C62B4610F9B5\InstallProperties 3: 2 
1: CopyToSystem32 2: 1631    
Run Code Online (Sandbox Code Playgroud)

我ExeCommand不知道为什么我不复制我的文件?

谢谢!

taf*_*fit 5

AFAIK copy是命令shell解释器的一部分,而不是命令本身.E..g如果您dir copy.* /s在文件Windows夹中执行操作,则可以检查此项.没有独立实现的文件copy.您可以做什么:在命令解释器的前缀之前添加,例如:

cmd /c copy /y 64bits.txt C:\Windows\System32
Run Code Online (Sandbox Code Playgroud)

该/c-parameter告诉解释执行后关闭(你也可以使用[%COMSPEC]-environment变量代替cmd).你也可以使用CAQuietExecute自定义操作,以防止CMD弹出,如所描述这里.
也许你也可以只使用CopyFile-element来完成你的任务?这样您就不必处理shell窗口等.