与CustomAction相关的Wix错误1721

san*_*_bl 4 custom-action wix windowserror

我有以下CostomAction

<Binary Id='ManualsBat' SourceFile='bin\Debug\test.bat' />

<CustomAction 
  Id="manuals"
  BinaryKey="ManualsBat"
  ExeCommand="[SourceDir]Manuals &quot;[Agent]Manuals&quot;"
  Execute="immediate"
  Return="check" />
Run Code Online (Sandbox Code Playgroud)

test.bat包含以下几行:

@echo off
echo Hello this a test batch file
pause
mkdir %2
copy %1 %2
Run Code Online (Sandbox Code Playgroud)

基本上要执行的操作是,在运行安装程序时,需要执行批处理文件。批处理文件必须创建一个新目录“ [Agent] Manuals”,并且必须将所有文件从[SourceDir] Manuals复制到[Agent] Manuals。

当我构建.wxs时,当我运行.msi时它不会给出任何错误bur,然后它会在日志文件中抱怨以下内容

错误1721。Windows Installer软件包存在问题。无法完成该安装所需的程序。请与您的支持人员或包装供应商联系。操作:手册,位置:C:\ Windows \ Installer \ MSI1F50.tmp,命令:C:\ dev \ CD \ Agent \ pd \ components \ link \ source \ Link \ Installer \ WiX \ WiX \ bin \ Debug \ Manuals“ D:\ Cam \ city \ Agent \ Manuals

有没有人遇到过这种错误的经验。如果有人可以帮助我解决这个问题,那就太好了。

Cos*_*rvu 5

您的自定义操作很可能需要管理员权限。尝试设置Execute属性deferredImpersonateno。请注意,这些选项要求在InstallFinalize标准操作之后安排操作。

  • 添加`After='InstallFinalize'` 给了我一个错误:“*...是一个脚本内自定义操作。它必须在 InstallExecuteSequence 表中的 InstallInitialize 操作和 InstallFinalize 操作之间进行排序*” (3认同)

Ser*_*666 5

也许引号中的问题。更改 ExecCommand 引号。尝试这个:

<Binary Id='ManualsBat' SourceFile='bin\Debug\test.bat' />

<CustomAction 
  Id="manuals"
  BinaryKey="ManualsBat"
  ExeCommand='"[SourceDir]Manuals" "[Agent]Manuals"'
  Execute="deferred"
  Impersonate="no"
  Return="check" />

<InstallExecuteSequence>
  <Custom Action="manuals" Before="InstallFinalize">Not Installed</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)