gpt4 book ai didi

wix - 如何调试用 Javascript 实现的 MSI 自定义操作?

转载 作者:行者123 更新时间:2023-12-02 09:00:15 24 4
gpt4 key购买 nike

我很难弄清楚我的 Javascript 自定义操作失败的原因。

我以为我在 WIX.chm 文件中看到了关于调试的主题;现在我找不到了。

第一季度
有关于如何调试 Javascript 或 VBScript 自定义操作的文档吗?

第二季度
有没有办法从自定义操作中将某些内容发送到 MSI 日志中?


附录:
Some people think script is the wrong tool for writing CAs .
我不同意。我想Javascript is a very good tool for the job .

最佳答案

对于文档,查找 Session.Message .

要从 Javascript 自定义操作将消息发送到 MSI 日志中,请遵循以下样板代码:

//
// CustomActions.js
//
// Template for WIX Custom Actions written in Javascript.
//
//
// Mon, 23 Nov 2009 10:54
//
// ===================================================================


// http://msdn.microsoft.com/en-us/library/sfw6660x(VS.85).aspx
var Buttons = {
OkOnly : 0,
OkCancel : 1,
AbortRetryIgnore : 2,
YesNoCancel : 3
};

var Icons = {
Critical : 16,
Question : 32,
Exclamation : 48,
Information : 64
};

var MsgKind = {
Error : 0x01000000,
Warning : 0x02000000,
User : 0x03000000,
Log : 0x04000000
};

// http://msdn.microsoft.com/en-us/library/aa371254(VS.85).aspx
var MsiActionStatus = {
None : 0,
Ok : 1, // success
Cancel : 2,
Abort : 3,
Retry : 4, // aka suspend?
Ignore : 5 // skip remaining actions; this is not an error.
};


function MyCustomActionInJavascript() {
try {
LogMessage("Hello from MyCustomActionInJavascript");
// ...do work here...
LogMessage("Goodbye from MyCustomActionInJavascript");
}
catch (exc1) {
Session.Property("CA_EXCEPTION") = exc1.message ;
LogException(exc1);
return MsiActionStatus.Abort;
}
return MsiActionStatus.Ok;
}

// Pop a message box. also spool a message into the MSI log, if it is enabled.
function LogException(exc) {
var record = Session.Installer.CreateRecord(0);
record.StringData(0) = "CustomAction: Exception: 0x" + decimalToHexString(exc.number) + " : " + exc.message;
Session.Message(MsgKind.Error + Icons.Critical + Buttons.btnOkOnly, record);
}


// spool an informational message into the MSI log, if it is enabled.
function LogMessage(msg) {
var record = Session.Installer.CreateRecord(0);
record.StringData(0) = "CustomAction:: " + msg;
Session.Message(MsgKind.Log, record);
}


// popup a msgbox
function AlertUser(msg) {
var record = Session.Installer.CreateRecord(0);
record.StringData(0) = msg;
Session.Message(MsgKind.User + Icons.Information + Buttons.btnOkOnly, record);
}

// Format a number as hex. Quantities over 7ffffff will be displayed properly.
function decimalToHexString(number) {
if (number < 0)
number = 0xFFFFFFFF + number + 1;
return number.toString(16).toUpperCase();
}

关于wix - 如何调试用 Javascript 实现的 MSI 自定义操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com