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