2012-12-20 112 views
1

我试图在wix安装期间执行自定义操作,并在自定义操作被调用时出现错误。我想通过完全控制将权限组“Everyone”添加到使用cacls的文件夹中。当我从cmd运行它时,它工作正常,但从安装程序它不起作用。以下是wix安装日志中的错误消息。Wix自定义操作执行cmd不起作用

信息1721.此Windows安装程序包存在问题。此安装完成所需的程序无法运行。联系您的支持人员或软件包供应商。 Action:SetPermissions,location:,command:“c:\ Windows \ SysWOW64 \ cmd.exe”cacls“c:\ Program Files \ Test”/ g everyone:f/e

这是我在wix中的自定义操作文件

<CustomAction Id="SetPermissions" Property="PermissionsAction" ExeCommand="&quot; [SystemFolder]cmd.exe&quot; cacls &quot;[Folder].&quot; /g everyone:f /e" Execute="immediate" Return="ignore" /> 
<CustomAction Id="PermissionsAction" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/> 
<InstallExecuteSequence> 
    <Custom Action="SetPortalDataPermissions" Before="InstallFinalize"> 
    </Custom> 
</InstallExecuteSequence> 

回答

4

你可以做你想做的内维克斯做什么没有自定义操作:

<CreateFolder Directory="DirectoryToSetPermissions"> 
<util:PermissionEx User="Everyone" GenericAll="yes" /> 
</CreateFolder> 

要使用的Util扩展名必须添加到WixUtilExtension集的引用和UtilExtension命名空间添加到Wix标签在您的wsx文件中,如下所示:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
+0

非常感谢,我在尝试使用自定义操作之前尝试过类似的操作,但未包含 user1334589

+1

很高兴它的工作,任何使WiX旅程更容易..;) –