SQL Script (ISqlScript)

Overview

An SQL Script represents a set of SQL statements that can run at different stages of installation: install, uninstall, maintenance, or rollback.

Scripts can be defined inline or linked to external SQL script files. They support statement separation (e.g., ;, GO), error handling modes, and token replacement for dynamic customization.

Isqldatabasescomponent sql script

Methods

  • NewScriptReplacement (string token, string value) → ISqlScriptReplacement Creates a script replacement entry that substitutes token with value before execution. Returns the created ISqlScriptReplacement.
  • DeleteScriptReplacement (ISqlScriptReplacement replacement) Deletes the specified ISqlScriptReplacement from this script.

Properties

  • Name (string) {get}{set} Gets or sets the display name of the script.
  • Connection (Variant) {get}{set} Gets or sets the connection this script runs against (ISqlCustomConnection, ISqlPredefinedConnection, or ISqliteConnection).
  • InlineScript (string) {get}{set} Gets or sets inline SQL text to execute.
  • ScriptFile (string) {get}{set} Gets or sets the path to an external SQL script file (project-relative or absolute path).
  • StatementSeparator (string) {get}{set} Gets or sets the separator used to split the script into statements (e.g., ; or GO).
  • StripComments (bool) {get}{set} When true, removes SQL comments before execution.
  • Condition (string) {get}{set} Gets or sets a Windows Installer condition. If the condition evaluates to false, the script is skipped.
  • RunAtInstall (bool) {get}{set} When true, runs the script during installation.
  • RunAtUninstall (bool) {get}{set} When true, runs the script during uninstall.
  • RunOnMaintenance (bool) {get}{set} When true, runs the script during maintenance operations (modify/repair).
  • RunOnRollback (bool) {get}{set} When true, runs the script during rollback.
  • OnError (string) {get}{set} Gets or sets the error handling behavior (e.g., continue, fail, rollback).
  • TransactionName (string) {get}{set} Gets or sets a transaction name to group multiple statements logically.
  • ScriptReplacements (SAFEARRAY(Variant)) {get} Returns the collection of ISqlScriptReplacement entries defined for this script.

Sample commands

# ISqlScript usage
$advinst  = New-Object -ComObject "AdvancedInstaller"
$project  = $advinst.CreateProject($advinst.ProjectTypes.Enterprise)

# Create a SQLite connection (required before adding scripts)
$sqlite = $project.SqlDatabasesComponent.NewSQLiteConnection("SQLite Script Sample")
$sqlite.DatabaseFile = "[APPDIR]\data\app.db"
$sqlite.CreateDatabaseIfNotExists = $true
$sqlite.Use64bitOdbcResource = $true
$sqlite.LoginTimeout = 30
$sqlite.IsVerbose = $true
$sqlite.LogErrorsToFile = $true

# Define a script
$sqlScript = $sqlite.NewScript("Inline Script Sample")
$sqlScript.StatementSeparator = ";"
$sqlScript.RunAtUninstall = $true
$sqlScript.RunOnRollback = $true
$sqlScript.Condition = 'REMOVE="ALL"'   # run only at uninstall
$sqlScript.OnError = "rollback"

# Add inline SQL
$sqlScript.InlineScript = @"
CREATE TABLE demo (
  id   INTEGER PRIMARY KEY,
  name TEXT NOT NULL
);
INSERT INTO demo (name) VALUES ('Sample Name');
DROP TABLE demo;
"@

# Add a script replacement
$sqlScript.NewScriptReplacement("TABLE_NAME", "demo")

# List all scripts
$sqlite.Scripts

# Delete script (optional)
# $sqlite.DeleteScript($sqlScript)

# Remove the connection (optional cleanup)
# $project.SqlDatabasesComponent.DeleteDatabaseObject($sqlite)

$project.SaveAs("F:\cmdlet\output\SQL Script Sample.aip")

See also