diff --git a/SabreTools.Models/WiseInstaller/Actions/AddToAutoexecBat.cs b/SabreTools.Models/WiseInstaller/Actions/AddToAutoexecBat.cs new file mode 100644 index 0000000..c882361 --- /dev/null +++ b/SabreTools.Models/WiseInstaller/Actions/AddToAutoexecBat.cs @@ -0,0 +1,32 @@ +namespace SabreTools.Models.WiseInstaller.Actions +{ + /// + /// Add to AUTOEXEC.BAT + /// + /// This action edits Autoexec.bat, which is executed during startup, allowing you to add + /// commands that are executed before Windows loads. + /// + /// Insert commands at a particular line number, or search the file for specific text and + /// insert the new line before, after, or in place of the existing line. The destination + /// computer is restarted after installation to force the new commands to take effect. + /// + /// + /// This action is called through Call DLL Function and is mapped to "f1". + /// + /// Probably this layout: + /// - Flags (numeric) (e.g. "12", "8") + /// - Unknown string (empty in samples) + /// - Executable path (e.g. "%WIN%\hcwSubID.exe", "765.exe") + /// - Executable path again (e.g. "%WIN%\hcwSubID.exe", "765.exe") + /// - Unknown string (empty in samples) + /// - Numeric value (e.g. "0") + /// + /// + public class AddToAutoexecBat : FunctionData + { + /// + /// Arguments passed in from the Call DLL Function + /// + public string[]? Args { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/WiseInstaller/Actions/AddToConfigSys.cs b/SabreTools.Models/WiseInstaller/Actions/AddToConfigSys.cs new file mode 100644 index 0000000..cfa624d --- /dev/null +++ b/SabreTools.Models/WiseInstaller/Actions/AddToConfigSys.cs @@ -0,0 +1,30 @@ +namespace SabreTools.Models.WiseInstaller.Actions +{ + /// + /// Add to CONFIG.SYS + /// + /// This action edits the Config.sys file to add new commands. Insert commands at a + /// particular line number, or search the file for specific text and insert the new line before, + /// after, or in place of the existing line. The destination computer is restarted automatically + /// to force the new commands to take effect. + /// + /// + /// This action is called through Call DLL Function and is mapped to "f2". + /// + /// Probably this layout: + /// - Flags (numeric) (e.g. "12", "8") + /// - Unknown string (empty in samples) + /// - Executable path (e.g. "%WIN%\hcwSubID.exe", "765.exe") + /// - Executable path again (e.g. "%WIN%\hcwSubID.exe", "765.exe") + /// - Unknown string (empty in samples) + /// - Numeric value (e.g. "0") + /// + /// + public class AddToConfigSys : FunctionData + { + /// + /// Arguments passed in from the Call DLL Function + /// + public string[]? Args { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/WiseInstaller/Actions/CallDllFunction.cs b/SabreTools.Models/WiseInstaller/Actions/CallDllFunction.cs index 1b05827..23b2fb5 100644 --- a/SabreTools.Models/WiseInstaller/Actions/CallDllFunction.cs +++ b/SabreTools.Models/WiseInstaller/Actions/CallDllFunction.cs @@ -22,6 +22,12 @@ namespace SabreTools.Models.WiseInstaller.Actions /// Expected Values: /// - Start block if function returns true (0x02 or 0x03) /// - Loop while function returns true (0x02 or 0x03) + /// - Hide progress bar before calling function (0x04) + /// - Unknown (0x08) - Unset if external library call? + /// - Unknown (0x10) - Results in the flag being (^ 0x30) + /// - Unknown (0x20) - Checked for existence along with 0x08 + /// not existing to run a function. It also results + /// in the flag value being (^ 0x30) /// public byte Flags { get; set; } @@ -50,11 +56,6 @@ namespace SabreTools.Models.WiseInstaller.Actions /// /// One entry per language count /// - /// - /// TODO: Figure out if it's more appropriate to store - /// the string data in its unparsed form or as the concrete - /// class data, where possible. - /// - public string[]? Entries { get; set; } + public FunctionData[]? Entries { get; set; } } } diff --git a/SabreTools.Models/WiseInstaller/Actions/CheckHttpConnection.cs b/SabreTools.Models/WiseInstaller/Actions/CheckHttpConnection.cs new file mode 100644 index 0000000..d2047fe --- /dev/null +++ b/SabreTools.Models/WiseInstaller/Actions/CheckHttpConnection.cs @@ -0,0 +1,45 @@ +namespace SabreTools.Models.WiseInstaller.Actions +{ + /// + /// Check HTTP Connection + /// + /// This action determines whether a given URL is valid by using WinSock.dll to try to + /// download the HTML page. + /// + /// If the installation is not true 32-bit, specify both Win16 and Win32 error variables. Then, + /// the Win32 WinSock.dll is used, followed by the Win16 WinSock.dll. Otherwise, only the + /// 32-bit version is used. + /// + /// + /// This action is called through Call DLL Function and is mapped to "f38". + /// + /// + public class CheckHttpConnection : FunctionData + { + /// + /// URL to check + /// + /// Includes http:// + public string? UrlToCheck { get; set; } + + /// + /// 32-bit windosck.dll error text return + /// + public string? Win32ErrorTextVariable { get; set; } + + /// + /// 32-bit winsock.dll error code return + /// + public string? Win32ErrorNumberVariable { get; set; } + + /// + /// 16-bit windosck.dll error text return + /// + public string? Win16ErrorTextVariable { get; set; } + + /// + /// 16-bit winsock.dll error code return + /// + public string? Win16ErrorNumberVariable { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/WiseInstaller/Actions/CopyLocalFile.cs b/SabreTools.Models/WiseInstaller/Actions/CopyLocalFile.cs index 13c481d..6905454 100644 --- a/SabreTools.Models/WiseInstaller/Actions/CopyLocalFile.cs +++ b/SabreTools.Models/WiseInstaller/Actions/CopyLocalFile.cs @@ -25,9 +25,9 @@ namespace SabreTools.Models.WiseInstaller.Actions public byte[]? Padding { get; set; } // 0x02 - 0x2A /// - /// Source file + /// Destination path /// - public string? Source { get; set; } // 0x2B - ? + public string? Destination { get; set; } // 0x2B - ? /// /// Description, one per language + 1 @@ -35,8 +35,8 @@ namespace SabreTools.Models.WiseInstaller.Actions public string[]? Description { get; set; } /// - /// Destination file + /// Source file /// - public string? Destination { get; set; } + public string? Source { get; set; } } } diff --git a/SabreTools.Models/WiseInstaller/Actions/EditRegistry.cs b/SabreTools.Models/WiseInstaller/Actions/EditRegistry.cs index 2e62d01..bf1330c 100644 --- a/SabreTools.Models/WiseInstaller/Actions/EditRegistry.cs +++ b/SabreTools.Models/WiseInstaller/Actions/EditRegistry.cs @@ -31,18 +31,16 @@ namespace SabreTools.Models.WiseInstaller.Actions /// Data type, defaults to 0 if not defined /// in source scripts /// - /// - /// This value is a byte in most versions of the WiseScript - /// format, but seems to be a ushort in newer(?) versions. - /// It is unknown if this is version-controlled or - /// flag-controlled, but it is difficult to tell what uses - /// which format. - /// - /// One version of WISE0001.DLL has the length as 2 bytes, - /// notably from an installer that is not that old. In the - /// final check, it only seems to check the first byte. - /// - public ushort DataType { get; set; } + public byte DataType { get; set; } + + /// + /// An unknown value that appears in some versions. + /// Its presence indicates to load an external DLL + /// for performing registry actions. Investigation + /// is needed on how to determine the script is the + /// version that uses this string or not. + /// + public string? UnknownFsllib { get; set; } /// /// Key path diff --git a/SabreTools.Models/WiseInstaller/Actions/ExternalDllCall.cs b/SabreTools.Models/WiseInstaller/Actions/ExternalDllCall.cs new file mode 100644 index 0000000..61b3235 --- /dev/null +++ b/SabreTools.Models/WiseInstaller/Actions/ExternalDllCall.cs @@ -0,0 +1,20 @@ +namespace SabreTools.Models.WiseInstaller.Actions +{ + /// + /// External DLL Call + /// + /// This represents a call to an external DLL. + /// + /// + /// This action is called through Call DLL Function and is invoked when + /// the external DLL path is provided. + /// + /// + public class ExternalDllCall : FunctionData + { + /// + /// Arguments passed in from the Call DLL Function + /// + public string[]? Args { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/WiseInstaller/Actions/UnknownF0.cs b/SabreTools.Models/WiseInstaller/Actions/UnknownF0.cs new file mode 100644 index 0000000..46bb649 --- /dev/null +++ b/SabreTools.Models/WiseInstaller/Actions/UnknownF0.cs @@ -0,0 +1,23 @@ +namespace SabreTools.Models.WiseInstaller.Actions +{ + /// + /// Unknown + /// + /// + /// This action is called through Call DLL Function and is mapped to "f0". + /// + /// Could be either: + /// - Set Control Text + /// - Set Current Control + /// + /// Layout is unknown + /// + /// + public class UnknownF0 : FunctionData + { + /// + /// Arguments passed in from the Call DLL Function + /// + public string[]? Args { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/WiseInstaller/Actions/UnknownF30.cs b/SabreTools.Models/WiseInstaller/Actions/UnknownF30.cs new file mode 100644 index 0000000..8b41459 --- /dev/null +++ b/SabreTools.Models/WiseInstaller/Actions/UnknownF30.cs @@ -0,0 +1,25 @@ +namespace SabreTools.Models.WiseInstaller.Actions +{ + /// + /// Unknown + /// + /// + /// This action is called through Call DLL Function and is mapped to "f30". + /// + /// Maybe "Modify Component Size"? + /// + /// Probably this layout: + /// - Flags (numeric) + /// - Directory name (e.g. "%INST%\..\DirectX") + /// - File name (e.g. "%INST%\..\DirectX\DSETUP.DLL") + /// - Offset? (e.g. "2623") + /// + /// + public class UnknownF30 : FunctionData + { + /// + /// Arguments passed in from the Call DLL Function + /// + public string[]? Args { get; set; } + } +} \ No newline at end of file