我遇到了Wix自定义操作未执行的问题。即使自定义操作返回ActionResult.Success,安装程序也会不断自动回滚。WiX自定义操作未执行
自定义操作(C#)在维克斯
[CustomAction]
public static ActionResult SetPermissionsToAppDataFolder(Session session)
{
return ActionResult.Success;
}
自定义动作定义
<!-- Custom Action -->
<Binary Id="CustomActionLibrary" SourceFile="$(var.CustomActionFolder)InstallerCustomActions.CA.dll" />
<CustomAction Id="CustomActionInstallDirectoryPermission"
BinaryKey="CustomActionLibrary"
DllEntry="SetPermissionsToAppDataFolder"
Execute="deferred"
Return="check" />
安装程序调用自定义操作
<!-- Install Sequences -->
<InstallExecuteSequence>
<Custom Action="CustomActionInstallDirectoryPermission" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
安装程序编译良好,因此找到自定义操作库文件没有问题。问题在于安装程序在回滚之前进入安装的最后阶段。当我们在安装序列中删除对自定义操作的调用时,安装程序将完成。
根据我的理解,自定义操作CA.dll被嵌入到最终的安装程序中。最初我以为CA.dll需要与安装程序一起发布,但后来发现安装程序将其编译到最终的.msi文件中。
我有“有线”使用代码自定义操作库在发现: http://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed
不管我做什么,我不能让安装程序完成,即使在自定义操作返回“成功”。任何帮助表示赞赏。
执行'MSIEXEC/I yourinstaller.msi/L log.txt'和寻找输出的'log.txt'文件中产生的任何错误。 –
会相对于安装程序创建日志文件吗? –
日志文件将在执行'msiexec'的目录中创建。也许像'C:\ Users \ Rupert Puxton \ Documents \ Visual Studio 2010 \ Projects \ My Project \ Installer \ bin \ Release',或类似的东西。 –