diff --git a/BuildProcessTemplates/DefaultTemplate.11.1.xaml b/BuildProcessTemplates/DefaultTemplate.11.1.xaml
new file mode 100644
index 0000000..bf54edf
--- /dev/null
+++ b/BuildProcessTemplates/DefaultTemplate.11.1.xaml
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [New Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings()]
+ [False]
+ [New Microsoft.TeamFoundation.Build.Workflow.Activities.TestSpecList(New Microsoft.TeamFoundation.Build.Workflow.Activities.AgileTestPlatformSpec("**\*test*.dll"))]
+ ["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"]
+ [False]
+ [True]
+ [True]
+ [Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.All]
+
+
+
+ [Microsoft.TeamFoundation.Build.Workflow.Activities.CodeAnalysisOption.AsConfigured]
+ [True]
+ [Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto]
+ [True]
+ [New Microsoft.TeamFoundation.Build.Workflow.Activities.SourceAndSymbolServerSettings(True, Nothing)]
+ [True]
+
+
+
+ [New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }]
+ [Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]
+
+
+
+
+
+
+ All
+ 11.0
+ Assembly references and imported namespaces serialized as XML namespaces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BuildProcessTemplates/DefaultTemplate.xaml b/BuildProcessTemplates/DefaultTemplate.xaml
new file mode 100644
index 0000000..12cc624
--- /dev/null
+++ b/BuildProcessTemplates/DefaultTemplate.xaml
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces serialized as XML namespaces
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BuildProcessTemplates/LabDefaultTemplate.11.xaml b/BuildProcessTemplates/LabDefaultTemplate.11.xaml
new file mode 100644
index 0000000..9e1fb0b
--- /dev/null
+++ b/BuildProcessTemplates/LabDefaultTemplate.11.xaml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11.0
+
+
+
+
+
+ 920,3702
+ Assembly references and imported namespaces serialized as XML namespaces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+ [LabWorkflowParameters.BuildDetails.BuildUri]
+
+
+ [ChildBuildDetail.Uri]
+
+
+
+
+
+
+
+
+
+
+
+ [BuildLocation]
+
+
+ [If(LabWorkflowParameters.BuildDetails.Configuration Is Nothing, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsEmpty Or (SelectedBuildDetail.Information.GetNodesByType(Microsoft.TeamFoundation.Build.Common.InformationTypes.ConfigurationSummary, True)).Count = 1, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsPlatformEmptyOrAnyCpu, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Platform + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration)))]
+
+
+
+
+
+
+
+
+
+
+
+ [LabEnvironmentUri]
+
+
+ [LabWorkflowParameters.EnvironmentDetails.LabEnvironmentUri.ToString()]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [PostDeploymentSnapshotName]
+
+
+ [If(LabWorkflowParameters.BuildDetails.IsTeamSystemBuild = True,String.Format("{0}_{1}_{2}", LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName, BuildNumber,BuildDetail.BuildNumber),String.Format("{0}_{1}", LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName, BuildDetail.BuildNumber))]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [BuildStatus]
+
+
+ [Microsoft.TeamFoundation.Build.Client.BuildStatus.PartiallySucceeded]
+
+
+
+
+
+
+ [BuildStatus]
+
+
+ [Microsoft.TeamFoundation.Build.Client.BuildStatus.Failed]
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BuildProcessTemplates/UpgradeTemplate.xaml b/BuildProcessTemplates/UpgradeTemplate.xaml
new file mode 100644
index 0000000..166acb2
--- /dev/null
+++ b/BuildProcessTemplates/UpgradeTemplate.xaml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }]
+
+
+
+ [Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto]
+ [False]
+ [False]
+
+
+
+
+
+
+
+
+
+ [Microsoft.TeamFoundation.VersionControl.Client.RecursionType.OneLevel]
+ [Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]
+
+
+
+ All
+ Assembly references and imported namespaces serialized as XML namespaces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Scriptio.sln b/Scriptio.sln
new file mode 100644
index 0000000..14e01d1
--- /dev/null
+++ b/Scriptio.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31702.278
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Scriptio", "Scriptio\Scriptio.csproj", "{D00DC776-3386-4146-9AD8-8408FA0F5FD7}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {0CE2C505-C0B0-408B-8493-9A913322FB9D}
+ EndGlobalSection
+EndGlobal
diff --git a/Scriptio/AboutForm.Designer.cs b/Scriptio/AboutForm.Designer.cs
new file mode 100644
index 0000000..a3a9ac0
--- /dev/null
+++ b/Scriptio/AboutForm.Designer.cs
@@ -0,0 +1,191 @@
+namespace Scriptio
+{
+ partial class AboutForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
+ this.btnClose = new System.Windows.Forms.Button();
+ this.btnUpdates = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.lblAssemblyVersion = new System.Windows.Forms.Label();
+ this.lblClickOnceVersion = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.richTextBox1 = new System.Windows.Forms.RichTextBox();
+ this.label5 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // btnClose
+ //
+ this.btnClose.Location = new System.Drawing.Point(306, 367);
+ this.btnClose.Name = "btnClose";
+ this.btnClose.Size = new System.Drawing.Size(75, 23);
+ this.btnClose.TabIndex = 0;
+ this.btnClose.Text = "&Close";
+ this.btnClose.UseVisualStyleBackColor = true;
+ this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+ //
+ // btnUpdates
+ //
+ this.btnUpdates.Location = new System.Drawing.Point(8, 367);
+ this.btnUpdates.Name = "btnUpdates";
+ this.btnUpdates.Size = new System.Drawing.Size(141, 23);
+ this.btnUpdates.TabIndex = 1;
+ this.btnUpdates.Text = "Check for &Updates";
+ this.btnUpdates.UseVisualStyleBackColor = true;
+ this.btnUpdates.Click += new System.EventHandler(this.btnUpdates_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.Location = new System.Drawing.Point(9, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(71, 19);
+ this.label1.TabIndex = 2;
+ this.label1.Text = "Scriptio";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(10, 32);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(313, 13);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "Copyright 2005 Bill Graziano, 2008 Riccardo Spagni and ViaData";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(10, 76);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(92, 13);
+ this.label3.TabIndex = 4;
+ this.label3.Text = "Assembly Version:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(10, 99);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(97, 13);
+ this.label4.TabIndex = 5;
+ this.label4.Text = "ClickOnce Version:";
+ //
+ // lblAssemblyVersion
+ //
+ this.lblAssemblyVersion.AutoSize = true;
+ this.lblAssemblyVersion.Location = new System.Drawing.Point(133, 76);
+ this.lblAssemblyVersion.Name = "lblAssemblyVersion";
+ this.lblAssemblyVersion.Size = new System.Drawing.Size(13, 13);
+ this.lblAssemblyVersion.TabIndex = 6;
+ this.lblAssemblyVersion.Text = "0";
+ //
+ // lblClickOnceVersion
+ //
+ this.lblClickOnceVersion.AutoSize = true;
+ this.lblClickOnceVersion.Location = new System.Drawing.Point(133, 99);
+ this.lblClickOnceVersion.Name = "lblClickOnceVersion";
+ this.lblClickOnceVersion.Size = new System.Drawing.Size(13, 13);
+ this.lblClickOnceVersion.TabIndex = 7;
+ this.lblClickOnceVersion.Text = "0";
+ //
+ // textBox1
+ //
+ this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.textBox1.Location = new System.Drawing.Point(13, 126);
+ this.textBox1.Multiline = true;
+ this.textBox1.Name = "textBox1";
+ this.textBox1.ReadOnly = true;
+ this.textBox1.Size = new System.Drawing.Size(368, 54);
+ this.textBox1.TabIndex = 8;
+ this.textBox1.Text = resources.GetString("textBox1.Text");
+ //
+ // richTextBox1
+ //
+ this.richTextBox1.Location = new System.Drawing.Point(10, 186);
+ this.richTextBox1.Name = "richTextBox1";
+ this.richTextBox1.ReadOnly = true;
+ this.richTextBox1.Size = new System.Drawing.Size(371, 175);
+ this.richTextBox1.TabIndex = 9;
+ this.richTextBox1.Text = resources.GetString("richTextBox1.Text");
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(10, 51);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(195, 13);
+ this.label5.TabIndex = 10;
+ this.label5.Text = "www.sqlteam.com / www.viadata.co.za";
+ //
+ // AboutForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(389, 397);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.richTextBox1);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.lblClickOnceVersion);
+ this.Controls.Add(this.lblAssemblyVersion);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.btnUpdates);
+ this.Controls.Add(this.btnClose);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "AboutForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "About";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button btnClose;
+ private System.Windows.Forms.Button btnUpdates;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label lblAssemblyVersion;
+ private System.Windows.Forms.Label lblClickOnceVersion;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.RichTextBox richTextBox1;
+ private System.Windows.Forms.Label label5;
+ }
+}
\ No newline at end of file
diff --git a/Scriptio/AboutForm.cs b/Scriptio/AboutForm.cs
new file mode 100644
index 0000000..15be50b
--- /dev/null
+++ b/Scriptio/AboutForm.cs
@@ -0,0 +1,92 @@
+///////////////////////////////////////////////////////////////////////////////////////////////
+// Scriptio - Script SQL Server 2005 objects
+// Copyright (C) 2005 Bill Graziano
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Reflection;
+
+using System.Deployment.Application;
+
+namespace Scriptio
+{
+ public partial class AboutForm : Form
+ {
+ public AboutForm()
+ {
+ InitializeComponent();
+
+ lblAssemblyVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim();
+
+ lblClickOnceVersion.Text = (ApplicationDeployment.IsNetworkDeployed ?
+ " " + ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString().Trim() :
+ "" ).Trim();
+
+ if (ApplicationDeployment.IsNetworkDeployed)
+ btnUpdates.Enabled = true;
+ else
+ btnUpdates.Enabled = false;
+ }
+
+ private void btnClose_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ private void btnUpdates_Click(object sender, EventArgs e)
+ {
+ if (ApplicationDeployment.IsNetworkDeployed)
+ {
+ Cursor cur = Cursor.Current;
+ Cursor.Current = Cursors.WaitCursor;
+ try
+ {
+ if (ApplicationDeployment.CurrentDeployment.CheckForUpdate())
+ {
+ Cursor.Current = cur;
+ if (MessageBox.Show(
+ "An updated version is available. Would you like to update now?",
+ "Update Found", MessageBoxButtons.YesNo) == DialogResult.Yes)
+ {
+ Cursor.Current = Cursors.WaitCursor;
+ ApplicationDeployment.CurrentDeployment.Update();
+ Cursor.Current = cur;
+ MessageBox.Show("Update downloaded. Scriptio will now restart.");
+ Application.Restart();
+ }
+ }
+ else
+ {
+ Cursor.Current = cur;
+ MessageBox.Show("No updates available at this time.");
+ }
+ }
+ finally
+ {
+ Cursor.Current = cur;
+ }
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Scriptio/AboutForm.resx b/Scriptio/AboutForm.resx
new file mode 100644
index 0000000..ecc10bd
--- /dev/null
+++ b/Scriptio/AboutForm.resx
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Scriptio comes with ABSOLUTELY NO WARRANTY; This is free software and you are welcome to redistribute it under certain conditions. Please see the GNU GPL license in the source code or at http://www.gnu.org.
+
+
+ Version 0.6.1 (May 28, 2008)
+-------------------------------------------------------------------------------------
+* Bug fix: correct encoding options when scripting to multiple files
+* Bug fix: changed row filter so selected system objects aren't scripted
+
+Version 0.6 (May 23, 2008)
+-------------------------------------------------------------------------------------
+* First code refresh by Riccardo Spagni
+* Complete overhaul of Populate Objects code
+* Complete overhaul of Script code to use the SMO Scripter object
+* Deprecated old SQLDataReader code
+* Deprecated old SMOObject.Script code
+* Code updated to script triggers
+* Added code behind Save As button
+* New option to support SQL 2000 file extensions
+* New option to support UNICODE or ASCII file output
+* Changed filtering system into group select system
+* Added progress bar and status label updates everywhere
+
+Version 0.5.5 (June 13, 2006)
+-------------------------------------------------------------------------------------
+* Minor Bug Fixes
+
+Version 0.5.4 (Feb 17th, 2006)
+-------------------------------------------------------------------------------------
+* When you connect using a SQL Server account (as opposed to a
+ trusted Windows account) Scriptio will now actually do the scripting
+ using the SQL Server account.
+
+Version 0.5.3 (Feb 12th, 2006)
+-------------------------------------------------------------------------------------
+* Script assemblies
+* Script object permissions
+
+
+
+
+ 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
+ AD8AAAD/4AAB//AAA//wAAf/+EAP///4H/8=
+
+
+
\ No newline at end of file
diff --git a/Scriptio/FormMain.Designer.cs b/Scriptio/FormMain.Designer.cs
new file mode 100644
index 0000000..4b83e85
--- /dev/null
+++ b/Scriptio/FormMain.Designer.cs
@@ -0,0 +1,860 @@
+namespace Scriptio
+{
+ partial class Scriptio
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Scriptio));
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabObjects = new System.Windows.Forms.TabPage();
+ this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.clbType = new System.Windows.Forms.CheckedListBox();
+ this.clbSchema = new System.Windows.Forms.CheckedListBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.chkScriptAll = new System.Windows.Forms.CheckBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.dgAvailableObjects = new System.Windows.Forms.DataGridView();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.chkPermissions = new System.Windows.Forms.CheckBox();
+ this.chkIndexes = new System.Windows.Forms.CheckBox();
+ this.chkKeys = new System.Windows.Forms.CheckBox();
+ this.chkExistance = new System.Windows.Forms.CheckBox();
+ this.chkDrop = new System.Windows.Forms.CheckBox();
+ this.chkCreate = new System.Windows.Forms.CheckBox();
+ this.chkIncludeHeaders = new System.Windows.Forms.CheckBox();
+ this.ddlDatabases = new System.Windows.Forms.ComboBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.txtPassword = new System.Windows.Forms.TextBox();
+ this.txtUsername = new System.Windows.Forms.TextBox();
+ this.btnConnect = new System.Windows.Forms.Button();
+ this.chkUseWindowsAuthentication = new System.Windows.Forms.CheckBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.txtServerName = new System.Windows.Forms.TextBox();
+ this.tabOptions = new System.Windows.Forms.TabPage();
+ this.groupBox5 = new System.Windows.Forms.GroupBox();
+ this.chkGenerateASCII = new System.Windows.Forms.CheckBox();
+ this.chkSchemaQualifyFK = new System.Windows.Forms.CheckBox();
+ this.chkSchemaQualifyDrops = new System.Windows.Forms.CheckBox();
+ this.chkSchemaQualifyCreates = new System.Windows.Forms.CheckBox();
+ this.chkCollation = new System.Windows.Forms.CheckBox();
+ this.groupBox4 = new System.Windows.Forms.GroupBox();
+ this.chkNamingConventions = new System.Windows.Forms.CheckBox();
+ this.rdoOnePerObject = new System.Windows.Forms.RadioButton();
+ this.btnPickDirectory = new System.Windows.Forms.Button();
+ this.label5 = new System.Windows.Forms.Label();
+ this.txtSaveLocation = new System.Windows.Forms.TextBox();
+ this.rdoOneFile = new System.Windows.Forms.RadioButton();
+ this.rdoNoFiles = new System.Windows.Forms.RadioButton();
+ this.tabResult = new System.Windows.Forms.TabPage();
+ this.btnCopyClipboard = new System.Windows.Forms.Button();
+ this.btnSaveAs = new System.Windows.Forms.Button();
+ this.txtResult = new System.Windows.Forms.TextBox();
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.btnScript = new System.Windows.Forms.Button();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
+ this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
+ this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.tabControl1.SuspendLayout();
+ this.tabObjects.SuspendLayout();
+ this.groupBox3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dgAvailableObjects)).BeginInit();
+ this.groupBox2.SuspendLayout();
+ this.groupBox1.SuspendLayout();
+ this.tabOptions.SuspendLayout();
+ this.groupBox5.SuspendLayout();
+ this.groupBox4.SuspendLayout();
+ this.tabResult.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.menuStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabObjects);
+ this.tabControl1.Controls.Add(this.tabOptions);
+ this.tabControl1.Controls.Add(this.tabResult);
+ this.tabControl1.Location = new System.Drawing.Point(12, 27);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(780, 622);
+ this.tabControl1.TabIndex = 0;
+ //
+ // tabObjects
+ //
+ this.tabObjects.Controls.Add(this.groupBox3);
+ this.tabObjects.Controls.Add(this.dgAvailableObjects);
+ this.tabObjects.Controls.Add(this.groupBox2);
+ this.tabObjects.Controls.Add(this.groupBox1);
+ this.tabObjects.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabObjects.Location = new System.Drawing.Point(4, 24);
+ this.tabObjects.Name = "tabObjects";
+ this.tabObjects.Padding = new System.Windows.Forms.Padding(3);
+ this.tabObjects.Size = new System.Drawing.Size(772, 594);
+ this.tabObjects.TabIndex = 0;
+ this.tabObjects.Text = "Database Objects";
+ this.tabObjects.UseVisualStyleBackColor = true;
+ //
+ // groupBox3
+ //
+ this.groupBox3.Controls.Add(this.clbType);
+ this.groupBox3.Controls.Add(this.clbSchema);
+ this.groupBox3.Controls.Add(this.label3);
+ this.groupBox3.Controls.Add(this.chkScriptAll);
+ this.groupBox3.Controls.Add(this.label4);
+ this.groupBox3.Location = new System.Drawing.Point(6, 143);
+ this.groupBox3.Name = "groupBox3";
+ this.groupBox3.Size = new System.Drawing.Size(756, 147);
+ this.groupBox3.TabIndex = 13;
+ this.groupBox3.TabStop = false;
+ this.groupBox3.Text = "Filter";
+ //
+ // clbType
+ //
+ this.clbType.CheckOnClick = true;
+ this.clbType.FormattingEnabled = true;
+ this.clbType.Location = new System.Drawing.Point(387, 19);
+ this.clbType.Name = "clbType";
+ this.clbType.Size = new System.Drawing.Size(196, 124);
+ this.clbType.TabIndex = 15;
+ this.clbType.SelectedIndexChanged += new System.EventHandler(this.ClbType_SelectedIndexChanged);
+ //
+ // clbSchema
+ //
+ this.clbSchema.CheckOnClick = true;
+ this.clbSchema.FormattingEnabled = true;
+ this.clbSchema.Location = new System.Drawing.Point(145, 19);
+ this.clbSchema.Name = "clbSchema";
+ this.clbSchema.Size = new System.Drawing.Size(196, 124);
+ this.clbSchema.TabIndex = 14;
+ this.clbSchema.SelectedIndexChanged += new System.EventHandler(this.ClbSchema_SelectedIndexChanged);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(347, 19);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(34, 13);
+ this.label3.TabIndex = 13;
+ this.label3.Text = "Type:";
+ //
+ // chkScriptAll
+ //
+ this.chkScriptAll.AutoSize = true;
+ this.chkScriptAll.Location = new System.Drawing.Point(9, 19);
+ this.chkScriptAll.Name = "chkScriptAll";
+ this.chkScriptAll.Size = new System.Drawing.Size(67, 17);
+ this.chkScriptAll.TabIndex = 9;
+ this.chkScriptAll.Text = "Script All";
+ this.chkScriptAll.UseVisualStyleBackColor = true;
+ this.chkScriptAll.CheckedChanged += new System.EventHandler(this.ChkScriptAll_CheckedChanged);
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(90, 20);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(49, 13);
+ this.label4.TabIndex = 12;
+ this.label4.Text = "Schema:";
+ //
+ // dgAvailableObjects
+ //
+ this.dgAvailableObjects.AllowUserToAddRows = false;
+ this.dgAvailableObjects.AllowUserToDeleteRows = false;
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dgAvailableObjects.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
+ this.dgAvailableObjects.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
+ dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
+ dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.dgAvailableObjects.DefaultCellStyle = dataGridViewCellStyle2;
+ this.dgAvailableObjects.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
+ this.dgAvailableObjects.Location = new System.Drawing.Point(6, 296);
+ this.dgAvailableObjects.Name = "dgAvailableObjects";
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dgAvailableObjects.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
+ this.dgAvailableObjects.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
+ this.dgAvailableObjects.Size = new System.Drawing.Size(756, 292);
+ this.dgAvailableObjects.TabIndex = 8;
+ //
+ // groupBox2
+ //
+ this.groupBox2.Controls.Add(this.chkPermissions);
+ this.groupBox2.Controls.Add(this.chkIndexes);
+ this.groupBox2.Controls.Add(this.chkKeys);
+ this.groupBox2.Controls.Add(this.chkExistance);
+ this.groupBox2.Controls.Add(this.chkDrop);
+ this.groupBox2.Controls.Add(this.chkCreate);
+ this.groupBox2.Controls.Add(this.chkIncludeHeaders);
+ this.groupBox2.Controls.Add(this.ddlDatabases);
+ this.groupBox2.Controls.Add(this.label2);
+ this.groupBox2.Location = new System.Drawing.Point(344, 6);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(418, 131);
+ this.groupBox2.TabIndex = 3;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Options";
+ //
+ // chkPermissions
+ //
+ this.chkPermissions.AutoSize = true;
+ this.chkPermissions.Location = new System.Drawing.Point(262, 40);
+ this.chkPermissions.Name = "chkPermissions";
+ this.chkPermissions.Size = new System.Drawing.Size(119, 17);
+ this.chkPermissions.TabIndex = 12;
+ this.chkPermissions.Text = "Include Permissions";
+ this.chkPermissions.UseVisualStyleBackColor = true;
+ //
+ // chkIndexes
+ //
+ this.chkIndexes.AutoSize = true;
+ this.chkIndexes.Checked = true;
+ this.chkIndexes.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkIndexes.Location = new System.Drawing.Point(150, 63);
+ this.chkIndexes.Name = "chkIndexes";
+ this.chkIndexes.Size = new System.Drawing.Size(101, 17);
+ this.chkIndexes.TabIndex = 11;
+ this.chkIndexes.Text = "Include Indexes";
+ this.chkIndexes.UseVisualStyleBackColor = true;
+ //
+ // chkKeys
+ //
+ this.chkKeys.AutoSize = true;
+ this.chkKeys.Checked = true;
+ this.chkKeys.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkKeys.Location = new System.Drawing.Point(150, 40);
+ this.chkKeys.Name = "chkKeys";
+ this.chkKeys.Size = new System.Drawing.Size(87, 17);
+ this.chkKeys.TabIndex = 10;
+ this.chkKeys.Text = "Include Keys";
+ this.chkKeys.UseVisualStyleBackColor = true;
+ //
+ // chkExistance
+ //
+ this.chkExistance.AutoSize = true;
+ this.chkExistance.Checked = true;
+ this.chkExistance.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkExistance.Location = new System.Drawing.Point(9, 86);
+ this.chkExistance.Name = "chkExistance";
+ this.chkExistance.Size = new System.Drawing.Size(121, 17);
+ this.chkExistance.TabIndex = 9;
+ this.chkExistance.Text = "Check for Existance";
+ this.chkExistance.UseVisualStyleBackColor = true;
+ //
+ // chkDrop
+ //
+ this.chkDrop.AutoSize = true;
+ this.chkDrop.Checked = true;
+ this.chkDrop.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkDrop.Location = new System.Drawing.Point(9, 63);
+ this.chkDrop.Name = "chkDrop";
+ this.chkDrop.Size = new System.Drawing.Size(95, 17);
+ this.chkDrop.TabIndex = 8;
+ this.chkDrop.Text = "Include DROP";
+ this.chkDrop.UseVisualStyleBackColor = true;
+ //
+ // chkCreate
+ //
+ this.chkCreate.AutoSize = true;
+ this.chkCreate.Checked = true;
+ this.chkCreate.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkCreate.Location = new System.Drawing.Point(9, 40);
+ this.chkCreate.Name = "chkCreate";
+ this.chkCreate.Size = new System.Drawing.Size(107, 17);
+ this.chkCreate.TabIndex = 7;
+ this.chkCreate.Text = "Include CREATE";
+ this.chkCreate.UseVisualStyleBackColor = true;
+ //
+ // chkIncludeHeaders
+ //
+ this.chkIncludeHeaders.AutoSize = true;
+ this.chkIncludeHeaders.Checked = true;
+ this.chkIncludeHeaders.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkIncludeHeaders.Location = new System.Drawing.Point(150, 86);
+ this.chkIncludeHeaders.Name = "chkIncludeHeaders";
+ this.chkIncludeHeaders.Size = new System.Drawing.Size(104, 17);
+ this.chkIncludeHeaders.TabIndex = 6;
+ this.chkIncludeHeaders.Text = "Include Headers";
+ this.chkIncludeHeaders.UseVisualStyleBackColor = true;
+ //
+ // ddlDatabases
+ //
+ this.ddlDatabases.FormattingEnabled = true;
+ this.ddlDatabases.Location = new System.Drawing.Point(68, 13);
+ this.ddlDatabases.Name = "ddlDatabases";
+ this.ddlDatabases.Size = new System.Drawing.Size(121, 21);
+ this.ddlDatabases.TabIndex = 5;
+ this.ddlDatabases.SelectedIndexChanged += new System.EventHandler(this.DdlDatabases_SelectedIndexChanged);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(6, 16);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(56, 13);
+ this.label2.TabIndex = 4;
+ this.label2.Text = "Database:";
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.label7);
+ this.groupBox1.Controls.Add(this.label6);
+ this.groupBox1.Controls.Add(this.txtPassword);
+ this.groupBox1.Controls.Add(this.txtUsername);
+ this.groupBox1.Controls.Add(this.btnConnect);
+ this.groupBox1.Controls.Add(this.chkUseWindowsAuthentication);
+ this.groupBox1.Controls.Add(this.label1);
+ this.groupBox1.Controls.Add(this.txtServerName);
+ this.groupBox1.Location = new System.Drawing.Point(6, 6);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(322, 131);
+ this.groupBox1.TabIndex = 2;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Server";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(11, 92);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(56, 13);
+ this.label7.TabIndex = 7;
+ this.label7.Text = "Password:";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(9, 66);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(58, 13);
+ this.label6.TabIndex = 6;
+ this.label6.Text = "Username:";
+ //
+ // txtPassword
+ //
+ this.txtPassword.Enabled = false;
+ this.txtPassword.Location = new System.Drawing.Point(73, 89);
+ this.txtPassword.Name = "txtPassword";
+ this.txtPassword.PasswordChar = '*';
+ this.txtPassword.Size = new System.Drawing.Size(143, 20);
+ this.txtPassword.TabIndex = 5;
+ //
+ // txtUsername
+ //
+ this.txtUsername.Enabled = false;
+ this.txtUsername.Location = new System.Drawing.Point(73, 63);
+ this.txtUsername.Name = "txtUsername";
+ this.txtUsername.Size = new System.Drawing.Size(143, 20);
+ this.txtUsername.TabIndex = 4;
+ //
+ // btnConnect
+ //
+ this.btnConnect.Location = new System.Drawing.Point(241, 102);
+ this.btnConnect.Name = "btnConnect";
+ this.btnConnect.Size = new System.Drawing.Size(75, 23);
+ this.btnConnect.TabIndex = 3;
+ this.btnConnect.Text = "&Connect";
+ this.btnConnect.UseVisualStyleBackColor = true;
+ this.btnConnect.Click += new System.EventHandler(this.BtnConnect_Click);
+ //
+ // chkUseWindowsAuthentication
+ //
+ this.chkUseWindowsAuthentication.AutoSize = true;
+ this.chkUseWindowsAuthentication.Checked = true;
+ this.chkUseWindowsAuthentication.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkUseWindowsAuthentication.Location = new System.Drawing.Point(73, 40);
+ this.chkUseWindowsAuthentication.Name = "chkUseWindowsAuthentication";
+ this.chkUseWindowsAuthentication.Size = new System.Drawing.Size(163, 17);
+ this.chkUseWindowsAuthentication.TabIndex = 2;
+ this.chkUseWindowsAuthentication.Text = "Use Windows Authentication";
+ this.chkUseWindowsAuthentication.UseVisualStyleBackColor = true;
+ this.chkUseWindowsAuthentication.CheckedChanged += new System.EventHandler(this.ChkUseWindowsAuthentication_CheckedChanged);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(6, 16);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(41, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Server:";
+ //
+ // txtServerName
+ //
+ this.txtServerName.Location = new System.Drawing.Point(73, 13);
+ this.txtServerName.Name = "txtServerName";
+ this.txtServerName.Size = new System.Drawing.Size(169, 20);
+ this.txtServerName.TabIndex = 0;
+ //
+ // tabOptions
+ //
+ this.tabOptions.Controls.Add(this.groupBox5);
+ this.tabOptions.Controls.Add(this.groupBox4);
+ this.tabOptions.Location = new System.Drawing.Point(4, 24);
+ this.tabOptions.Name = "tabOptions";
+ this.tabOptions.Size = new System.Drawing.Size(772, 594);
+ this.tabOptions.TabIndex = 3;
+ this.tabOptions.Text = "More Options";
+ this.tabOptions.UseVisualStyleBackColor = true;
+ //
+ // groupBox5
+ //
+ this.groupBox5.Controls.Add(this.chkGenerateASCII);
+ this.groupBox5.Controls.Add(this.chkSchemaQualifyFK);
+ this.groupBox5.Controls.Add(this.chkSchemaQualifyDrops);
+ this.groupBox5.Controls.Add(this.chkSchemaQualifyCreates);
+ this.groupBox5.Controls.Add(this.chkCollation);
+ this.groupBox5.Location = new System.Drawing.Point(3, 141);
+ this.groupBox5.Name = "groupBox5";
+ this.groupBox5.Size = new System.Drawing.Size(766, 450);
+ this.groupBox5.TabIndex = 19;
+ this.groupBox5.TabStop = false;
+ this.groupBox5.Text = "Additional Scription Options";
+ //
+ // chkGenerateASCII
+ //
+ this.chkGenerateASCII.AutoSize = true;
+ this.chkGenerateASCII.Checked = true;
+ this.chkGenerateASCII.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkGenerateASCII.Location = new System.Drawing.Point(7, 115);
+ this.chkGenerateASCII.Name = "chkGenerateASCII";
+ this.chkGenerateASCII.Size = new System.Drawing.Size(317, 17);
+ this.chkGenerateASCII.TabIndex = 4;
+ this.chkGenerateASCII.Text = "Generate ASCII Files (Unchecked Generates UNICODE Files)";
+ this.chkGenerateASCII.UseVisualStyleBackColor = true;
+ //
+ // chkSchemaQualifyFK
+ //
+ this.chkSchemaQualifyFK.AutoSize = true;
+ this.chkSchemaQualifyFK.Checked = true;
+ this.chkSchemaQualifyFK.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkSchemaQualifyFK.Location = new System.Drawing.Point(7, 92);
+ this.chkSchemaQualifyFK.Name = "chkSchemaQualifyFK";
+ this.chkSchemaQualifyFK.Size = new System.Drawing.Size(186, 17);
+ this.chkSchemaQualifyFK.TabIndex = 3;
+ this.chkSchemaQualifyFK.Text = "Qualify Foreign Keys with Schema";
+ this.chkSchemaQualifyFK.UseVisualStyleBackColor = true;
+ //
+ // chkSchemaQualifyDrops
+ //
+ this.chkSchemaQualifyDrops.AutoSize = true;
+ this.chkSchemaQualifyDrops.Checked = true;
+ this.chkSchemaQualifyDrops.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkSchemaQualifyDrops.Location = new System.Drawing.Point(7, 68);
+ this.chkSchemaQualifyDrops.Name = "chkSchemaQualifyDrops";
+ this.chkSchemaQualifyDrops.Size = new System.Drawing.Size(161, 17);
+ this.chkSchemaQualifyDrops.TabIndex = 2;
+ this.chkSchemaQualifyDrops.Text = "Qualify DROPs with Schema";
+ this.chkSchemaQualifyDrops.UseVisualStyleBackColor = true;
+ //
+ // chkSchemaQualifyCreates
+ //
+ this.chkSchemaQualifyCreates.AutoSize = true;
+ this.chkSchemaQualifyCreates.Checked = true;
+ this.chkSchemaQualifyCreates.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkSchemaQualifyCreates.Location = new System.Drawing.Point(7, 44);
+ this.chkSchemaQualifyCreates.Name = "chkSchemaQualifyCreates";
+ this.chkSchemaQualifyCreates.Size = new System.Drawing.Size(173, 17);
+ this.chkSchemaQualifyCreates.TabIndex = 1;
+ this.chkSchemaQualifyCreates.Text = "Qualify CREATEs with Schema";
+ this.chkSchemaQualifyCreates.UseVisualStyleBackColor = true;
+ //
+ // chkCollation
+ //
+ this.chkCollation.AutoSize = true;
+ this.chkCollation.Checked = true;
+ this.chkCollation.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkCollation.Location = new System.Drawing.Point(7, 20);
+ this.chkCollation.Name = "chkCollation";
+ this.chkCollation.Size = new System.Drawing.Size(104, 17);
+ this.chkCollation.TabIndex = 0;
+ this.chkCollation.Text = "Include Collation";
+ this.chkCollation.UseVisualStyleBackColor = true;
+ //
+ // groupBox4
+ //
+ this.groupBox4.Controls.Add(this.chkNamingConventions);
+ this.groupBox4.Controls.Add(this.rdoOnePerObject);
+ this.groupBox4.Controls.Add(this.btnPickDirectory);
+ this.groupBox4.Controls.Add(this.label5);
+ this.groupBox4.Controls.Add(this.txtSaveLocation);
+ this.groupBox4.Controls.Add(this.rdoOneFile);
+ this.groupBox4.Controls.Add(this.rdoNoFiles);
+ this.groupBox4.Location = new System.Drawing.Point(3, 3);
+ this.groupBox4.Name = "groupBox4";
+ this.groupBox4.Size = new System.Drawing.Size(766, 131);
+ this.groupBox4.TabIndex = 18;
+ this.groupBox4.TabStop = false;
+ this.groupBox4.Text = "Files to Generate";
+ //
+ // chkNamingConventions
+ //
+ this.chkNamingConventions.AutoSize = true;
+ this.chkNamingConventions.Enabled = false;
+ this.chkNamingConventions.Location = new System.Drawing.Point(129, 67);
+ this.chkNamingConventions.Name = "chkNamingConventions";
+ this.chkNamingConventions.Size = new System.Drawing.Size(271, 17);
+ this.chkNamingConventions.TabIndex = 18;
+ this.chkNamingConventions.Text = "Generate Files With SQL 2000 Naming Conventions";
+ this.chkNamingConventions.UseVisualStyleBackColor = true;
+ //
+ // rdoOnePerObject
+ //
+ this.rdoOnePerObject.AutoSize = true;
+ this.rdoOnePerObject.Location = new System.Drawing.Point(7, 67);
+ this.rdoOnePerObject.Name = "rdoOnePerObject";
+ this.rdoOnePerObject.Size = new System.Drawing.Size(116, 17);
+ this.rdoOnePerObject.TabIndex = 2;
+ this.rdoOnePerObject.Text = "One File per Object";
+ this.rdoOnePerObject.UseVisualStyleBackColor = true;
+ this.rdoOnePerObject.CheckedChanged += new System.EventHandler(this.RdoOnePerObject_CheckedChanged);
+ //
+ // btnPickDirectory
+ //
+ this.btnPickDirectory.Location = new System.Drawing.Point(501, 96);
+ this.btnPickDirectory.Name = "btnPickDirectory";
+ this.btnPickDirectory.Size = new System.Drawing.Size(26, 23);
+ this.btnPickDirectory.TabIndex = 16;
+ this.btnPickDirectory.Text = "...";
+ this.btnPickDirectory.UseVisualStyleBackColor = true;
+ this.btnPickDirectory.Click += new System.EventHandler(this.BtnPickDirectory_Click);
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(3, 101);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(51, 13);
+ this.label5.TabIndex = 17;
+ this.label5.Text = "Location:";
+ //
+ // txtSaveLocation
+ //
+ this.txtSaveLocation.Location = new System.Drawing.Point(60, 98);
+ this.txtSaveLocation.Name = "txtSaveLocation";
+ this.txtSaveLocation.Size = new System.Drawing.Size(435, 20);
+ this.txtSaveLocation.TabIndex = 15;
+ //
+ // rdoOneFile
+ //
+ this.rdoOneFile.AutoSize = true;
+ this.rdoOneFile.Location = new System.Drawing.Point(7, 43);
+ this.rdoOneFile.Name = "rdoOneFile";
+ this.rdoOneFile.Size = new System.Drawing.Size(64, 17);
+ this.rdoOneFile.TabIndex = 1;
+ this.rdoOneFile.Text = "One File";
+ this.rdoOneFile.UseVisualStyleBackColor = true;
+ this.rdoOneFile.CheckedChanged += new System.EventHandler(this.RdoOneFile_CheckedChanged);
+ //
+ // rdoNoFiles
+ //
+ this.rdoNoFiles.AutoSize = true;
+ this.rdoNoFiles.Checked = true;
+ this.rdoNoFiles.Location = new System.Drawing.Point(6, 19);
+ this.rdoNoFiles.Name = "rdoNoFiles";
+ this.rdoNoFiles.Size = new System.Drawing.Size(63, 17);
+ this.rdoNoFiles.TabIndex = 0;
+ this.rdoNoFiles.TabStop = true;
+ this.rdoNoFiles.Text = "No Files";
+ this.rdoNoFiles.UseVisualStyleBackColor = true;
+ this.rdoNoFiles.CheckedChanged += new System.EventHandler(this.RdoNoFiles_CheckedChanged);
+ //
+ // tabResult
+ //
+ this.tabResult.Controls.Add(this.btnCopyClipboard);
+ this.tabResult.Controls.Add(this.btnSaveAs);
+ this.tabResult.Controls.Add(this.txtResult);
+ this.tabResult.Location = new System.Drawing.Point(4, 24);
+ this.tabResult.Name = "tabResult";
+ this.tabResult.Size = new System.Drawing.Size(772, 594);
+ this.tabResult.TabIndex = 2;
+ this.tabResult.Text = "Generated Script";
+ this.tabResult.UseVisualStyleBackColor = true;
+ //
+ // btnCopyClipboard
+ //
+ this.btnCopyClipboard.Location = new System.Drawing.Point(3, 571);
+ this.btnCopyClipboard.Name = "btnCopyClipboard";
+ this.btnCopyClipboard.Size = new System.Drawing.Size(135, 21);
+ this.btnCopyClipboard.TabIndex = 2;
+ this.btnCopyClipboard.Text = "&Copy to Clipboard";
+ this.btnCopyClipboard.UseVisualStyleBackColor = true;
+ this.btnCopyClipboard.Click += new System.EventHandler(this.BtnCopyClipboard_Click);
+ //
+ // btnSaveAs
+ //
+ this.btnSaveAs.Location = new System.Drawing.Point(144, 571);
+ this.btnSaveAs.Name = "btnSaveAs";
+ this.btnSaveAs.Size = new System.Drawing.Size(75, 21);
+ this.btnSaveAs.TabIndex = 1;
+ this.btnSaveAs.Text = "Save &As...";
+ this.btnSaveAs.UseVisualStyleBackColor = true;
+ this.btnSaveAs.Click += new System.EventHandler(this.BtnSaveAs_Click);
+ //
+ // txtResult
+ //
+ this.txtResult.Location = new System.Drawing.Point(3, 3);
+ this.txtResult.Multiline = true;
+ this.txtResult.Name = "txtResult";
+ this.txtResult.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.txtResult.Size = new System.Drawing.Size(766, 562);
+ this.txtResult.TabIndex = 0;
+ this.txtResult.WordWrap = false;
+ //
+ // btnCancel
+ //
+ this.btnCancel.Location = new System.Drawing.Point(703, 655);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(75, 23);
+ this.btnCancel.TabIndex = 1;
+ this.btnCancel.Text = "&Exit";
+ this.btnCancel.UseVisualStyleBackColor = true;
+ this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click);
+ //
+ // btnScript
+ //
+ this.btnScript.Location = new System.Drawing.Point(622, 655);
+ this.btnScript.Name = "btnScript";
+ this.btnScript.Size = new System.Drawing.Size(75, 23);
+ this.btnScript.TabIndex = 2;
+ this.btnScript.Text = "&Script";
+ this.btnScript.UseVisualStyleBackColor = true;
+ this.btnScript.Click += new System.EventHandler(this.btnScript_Click);
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabel1,
+ this.toolStripProgressBar1});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 676);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(792, 22);
+ this.statusStrip1.SizingGrip = false;
+ this.statusStrip1.TabIndex = 4;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // toolStripStatusLabel1
+ //
+ this.toolStripStatusLabel1.AutoSize = false;
+ this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
+ this.toolStripStatusLabel1.Size = new System.Drawing.Size(300, 17);
+ this.toolStripStatusLabel1.Text = "Ready";
+ this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // toolStripProgressBar1
+ //
+ this.toolStripProgressBar1.Name = "toolStripProgressBar1";
+ this.toolStripProgressBar1.Size = new System.Drawing.Size(200, 16);
+ //
+ // saveFileDialog1
+ //
+ this.saveFileDialog1.DefaultExt = "sql";
+ this.saveFileDialog1.Filter = "SQL scripts (*.sql)|*.sql|Stored Procedure scripts (*.prc)|*.prc|View scripts (*." +
+ "viw)|*.viw|UDF scripts (*.udf)|*.udf|Table scripts (*.tab)|*.tab|Trigger scripts" +
+ " (*.trg)|*.trg|All files (*.*)|*.*";
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.fileToolStripMenuItem,
+ this.helpToolStripMenuItem});
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(792, 24);
+ this.menuStrip1.TabIndex = 5;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // fileToolStripMenuItem
+ //
+ this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.exitToolStripMenuItem});
+ this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
+ this.fileToolStripMenuItem.Text = "&File";
+ //
+ // exitToolStripMenuItem
+ //
+ this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+ this.exitToolStripMenuItem.Size = new System.Drawing.Size(100, 22);
+ this.exitToolStripMenuItem.Text = "&Exit";
+ //
+ // helpToolStripMenuItem
+ //
+ this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.aboutToolStripMenuItem});
+ this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
+ this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
+ this.helpToolStripMenuItem.Text = "&Help";
+ //
+ // aboutToolStripMenuItem
+ //
+ this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
+ this.aboutToolStripMenuItem.ShowShortcutKeys = false;
+ this.aboutToolStripMenuItem.Size = new System.Drawing.Size(100, 22);
+ this.aboutToolStripMenuItem.Text = "&About";
+ //
+ // Scriptio
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(792, 698);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.menuStrip1);
+ this.Controls.Add(this.btnScript);
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.tabControl1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MainMenuStrip = this.menuStrip1;
+ this.MaximizeBox = false;
+ this.MaximumSize = new System.Drawing.Size(814, 740);
+ this.MinimizeBox = false;
+ this.MinimumSize = new System.Drawing.Size(814, 740);
+ this.Name = "Scriptio";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Scriptio";
+ this.Load += new System.EventHandler(this.Scriptio_Load);
+ this.tabControl1.ResumeLayout(false);
+ this.tabObjects.ResumeLayout(false);
+ this.groupBox3.ResumeLayout(false);
+ this.groupBox3.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dgAvailableObjects)).EndInit();
+ this.groupBox2.ResumeLayout(false);
+ this.groupBox2.PerformLayout();
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.tabOptions.ResumeLayout(false);
+ this.groupBox5.ResumeLayout(false);
+ this.groupBox5.PerformLayout();
+ this.groupBox4.ResumeLayout(false);
+ this.groupBox4.PerformLayout();
+ this.tabResult.ResumeLayout(false);
+ this.tabResult.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabObjects;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox txtServerName;
+ private System.Windows.Forms.Button btnCancel;
+ private System.Windows.Forms.Button btnScript;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.CheckBox chkUseWindowsAuthentication;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.Button btnConnect;
+ private System.Windows.Forms.ComboBox ddlDatabases;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TabPage tabResult;
+ private System.Windows.Forms.TextBox txtResult;
+ private System.Windows.Forms.DataGridView dgAvailableObjects;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
+ private System.Windows.Forms.CheckBox chkIncludeHeaders;
+ private System.Windows.Forms.CheckBox chkExistance;
+ private System.Windows.Forms.CheckBox chkDrop;
+ private System.Windows.Forms.CheckBox chkCreate;
+ private System.Windows.Forms.CheckBox chkKeys;
+ private System.Windows.Forms.CheckBox chkScriptAll;
+ private System.Windows.Forms.CheckBox chkIndexes;
+ private System.Windows.Forms.GroupBox groupBox3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TextBox txtPassword;
+ private System.Windows.Forms.TextBox txtUsername;
+ private System.Windows.Forms.SaveFileDialog saveFileDialog1;
+ private System.Windows.Forms.Button btnSaveAs;
+ private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
+ private System.Windows.Forms.TabPage tabOptions;
+ private System.Windows.Forms.GroupBox groupBox4;
+ private System.Windows.Forms.RadioButton rdoOnePerObject;
+ private System.Windows.Forms.RadioButton rdoOneFile;
+ private System.Windows.Forms.RadioButton rdoNoFiles;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Button btnPickDirectory;
+ private System.Windows.Forms.TextBox txtSaveLocation;
+ private System.Windows.Forms.Button btnCopyClipboard;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.MenuStrip menuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
+ private System.Windows.Forms.GroupBox groupBox5;
+ private System.Windows.Forms.CheckBox chkCollation;
+ private System.Windows.Forms.CheckBox chkSchemaQualifyCreates;
+ private System.Windows.Forms.CheckBox chkSchemaQualifyDrops;
+ private System.Windows.Forms.CheckBox chkSchemaQualifyFK;
+ private System.Windows.Forms.CheckBox chkPermissions;
+ private System.Windows.Forms.CheckBox chkGenerateASCII;
+ private System.Windows.Forms.CheckBox chkNamingConventions;
+ private System.Windows.Forms.CheckedListBox clbType;
+ private System.Windows.Forms.CheckedListBox clbSchema;
+
+
+ }
+}
+
diff --git a/Scriptio/FormMain.cs b/Scriptio/FormMain.cs
new file mode 100644
index 0000000..a08a4c3
--- /dev/null
+++ b/Scriptio/FormMain.cs
@@ -0,0 +1,767 @@
+///////////////////////////////////////////////////////////////////////////////////////////////
+// Scriptio - Script SQL Server 2005 objects
+// Copyright (C) 2005 Bill Graziano and 2008 Riccardo Spagni
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+// Please note: comments marked RS are for code pieces added by Riccardo Spagni
+
+// TODO: (ie. optional extras:)
+//
+// - NB: Check if this works with SQL 2008 (Katmai)
+//
+// - NB: Find a way of integrating with SQL 2005's context menu; maybe have Scriptio as a contex menu item on a
+// database level, and then launch Scriptio with the authentication items already filled in, the database list
+// populated with a single item (the database we've right clicked, obviously) and grayed out, and fire off the
+// PopulateDatabases method. Also, see if we can't integrate it with SQL 2008 as well whilst we're about it.
+//
+// - Build intelligence into the selection system, so that when you select an item in the DataGrid it checks if
+// all Stored Procs, for example, have been manually ticked in the DataGrid, and then reflects that in the
+// CheckedListBox by ticking the StoredProc's item.
+//
+// - "Beautify" the items in clbType, so that it puts a space between capitalised words - ie. when it adds
+// UserDefinedTypes to the clbType items collection, it should add it as "User Defined Types". Beautify the
+// description in the DataGrid too so that they match.
+//
+// - Add other encoding options (UTF-7, UTF-8, UTF-32, BigEndianUnicode), dependant on demand
+//
+// - Make sure we've exposed ALL relevant ScriptingOptions properties to the user, you never know what oddity might
+// be required by a single person in a single environment
+
+using Microsoft.SqlServer.Management.Common;
+using Microsoft.SqlServer.Management.Sdk.Sfc;
+using Microsoft.SqlServer.Management.Smo;
+using System;
+using System.Collections.Specialized;
+using System.Data;
+using System.Data.SqlClient;
+using System.IO;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Scriptio
+{
+ public partial class Scriptio : Form
+ {
+ // RS: It's better to use StringBuilder to build our script than string concatenation, as the StringBuilder
+ // object is more efficient. When you concatenate a string, the original string is actually destroyed on
+ // the heap and a new one is created.
+ private StringBuilder result;
+
+ // RS: This is the main DataTable that contains ALL of the objects on the database, system and user
+ // supplied
+ private DataTable allobjects = new DataTable();
+
+ // RS: We use a DataView with a custom RowFilter to ensure that we exclude system supplied objects from
+ // the DataGrid that the user will use to select the objects they want to script
+ private DataView allobjectsview;
+
+ public Scriptio()
+ {
+ InitializeComponent();
+
+ aboutToolStripMenuItem.Click += new EventHandler(AboutToolStripMenuItem_Click);
+ exitToolStripMenuItem.Click += new EventHandler(ExitToolStripMenuItem_Click);
+ }
+
+ #region Menu Stuff
+
+ private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ Close();
+ }
+
+ private void AboutToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ AboutForm aboutForm = new AboutForm();
+ aboutForm.ShowDialog();
+ }
+
+ #endregion Menu Stuff
+
+ private void BtnCancel_Click(object sender, EventArgs e)
+ {
+ Close();
+ }
+
+ private void BtnConnect_Click(object sender, EventArgs e)
+ {
+ PopulateDatabases(txtServerName.Text);
+ }
+
+ private void PopulateDatabases(string serverName)
+ {
+ // RS: Tell the user what we're doing when we do it
+ toolStripStatusLabel1.Text = "Reading databases...";
+ toolStripProgressBar1.Value = 0;
+ Application.DoEvents();
+ ddlDatabases.Items.Clear();
+ try
+ {
+ SqlConnection connection = GetConnection("tempdb");
+ //Server srv = new Server(new ServerConnection(connection));
+ Server srv = new Server(serverName);
+
+ // Check if we're using 2005 or higher
+ if (srv.Information.Version.Major >= 9)
+ {
+ // RS: Set the progress bar maximum so we can update it as we step through
+ toolStripProgressBar1.Maximum = srv.Databases.Count;
+
+ ddlDatabases.Items.Add("(Select a database)");
+
+ foreach (Database db in srv.Databases)
+ {
+ // RS: Update the progress bar
+ toolStripProgressBar1.Value++;
+ if (!db.IsSystemObject && db.IsAccessible)
+ {
+ ddlDatabases.Items.Add(db.Name);
+ }
+ }
+
+ if (ddlDatabases.Items.Count > 0)
+ {
+ ddlDatabases.SelectedIndex = 0;
+ }
+ }
+ else
+ {
+ MessageBox.Show("SMO Scripting is only available for SQL Server 2005 and higher",
+ "Incorrect Server Version", MessageBoxButtons.OK, MessageBoxIcon.Error);
+
+ dgAvailableObjects.Rows.Clear();
+ chkScriptAll.Checked = false;
+ ddlDatabases.ResetText();
+ }
+ }
+ catch (ConnectionFailureException)
+ {
+ MessageBox.Show("Unable to connect to server",
+ "Invalid Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ // RS: Reset the label text
+ toolStripStatusLabel1.Text = "Ready";
+ }
+
+ private void PopulateObjects(string serverName, string databaseName)
+ {
+ // RS: This has been completely overhauled and replaced. Instead of querying the sys.all_objects,
+ // sys.schemas and sys.assemblies tables we step through our SMO database object. This is efficient
+ // enough - even on large databases - but it allows us to use the Scripter object to script objects
+ // based on the URN returned.
+ Server srv;
+
+ if (chkUseWindowsAuthentication.Checked)
+ {
+ srv = new Server(txtServerName.Text);
+ }
+ else
+ {
+ srv = new Server(new ServerConnection(txtServerName.Text, txtUsername.Text, txtPassword.Text));
+ }
+
+ Database db = srv.Databases[ddlDatabases.SelectedItem.ToString()];
+
+ // RS: Set the DataTable up so we're all ready to add data to it
+ allobjects = null;
+ allobjects = new DataTable();
+ allobjects.Columns.Add("Script", typeof(bool));
+ allobjects.Columns.Add("Schema", typeof(string));
+ allobjects.Columns.Add("Object", typeof(string));
+ allobjects.Columns.Add("Type", typeof(string));
+ allobjects.Columns.Add("URN", typeof(string));
+
+ // RS: Set a temporary DataTable up so we can plug the EnumObjects stuff into it. There is a method
+ // behind this madness - we can use the Count property of the allobjectsenum DataTable to get a total
+ // size of the objects in our database.
+ DataTable allobjectsenum = new DataTable();
+ toolStripStatusLabel1.Text = "Enumerating objects in database...";
+ Application.DoEvents();
+ allobjectsenum = db.EnumObjects();
+
+ toolStripProgressBar1.Value = 0;
+ toolStripProgressBar1.Maximum = allobjectsenum.Rows.Count;
+ toolStripStatusLabel1.Text = "Reading primary objects...";
+ Application.DoEvents();
+
+ // RS: Clear the filter items.
+ chkScriptAll.Checked = false;
+ clbSchema.Items.Clear();
+ clbType.Items.Clear();
+
+ // RS: Step through our enumerated DataTable and add them to a final DataTable. There's probably a
+ // better way of doing this, but I like the fact that this updated the progress bar as it keeps the
+ // user notified that things are happening.
+ foreach (DataRow dataRow in allobjectsenum.Rows)
+ {
+ toolStripProgressBar1.Value++;
+ allobjects.Rows.Add(new object[] { false, dataRow[1].ToString(), dataRow[2].ToString(), dataRow[0].ToString(), dataRow[3].ToString() });
+ // RS: This is a little chunky, I'm open to suggestions in terms of making it more efficient. All
+ // it does is populate the clbSchema listbox with unique schema values that aren't system schemas.
+ if ((!clbSchema.Items.Contains(dataRow[1].ToString())) && (dataRow[1].ToString() != "" && dataRow[1].ToString() != "sys" && dataRow[1].ToString() != "INFORMATION_SCHEMA"))
+ {
+ clbSchema.Items.Add(dataRow[1].ToString());
+ }
+
+ Application.DoEvents();
+ }
+
+ // RS: Disable the schema list if it's empty
+ if (clbSchema.Items.Count > 0)
+ {
+ clbSchema.Enabled = true;
+ }
+ else
+ {
+ clbSchema.Enabled = false;
+ }
+
+ // RS: Update the user
+ toolStripProgressBar1.Value = 0;
+ toolStripStatusLabel1.Text = "Reading secondary objects...";
+ Application.DoEvents();
+
+ // RS: This is icky, but the only way. Step through triggers on a per table basis and add it to the
+ // DataTable. NOTE: We don't need to update the clbSchema list box, as the schema that the table
+ // that "owns" the trigger is inferred on the trigger. I think. Does that make sense to anyone besides
+ // me?
+ foreach (Table tbl in db.Tables)
+ {
+ foreach (Trigger trg in tbl.Triggers)
+ {
+ allobjects.Rows.Add(new object[] { false, tbl.Schema.ToString(), trg.Name.ToString(), "Trigger", trg.Urn.ToString() });
+ }
+ }
+
+ // RS: Set the DataView up based on the allobjects DataTable
+ allobjectsview = new DataView(allobjects);
+
+ // RS: Large databases can take a few seconds to create the DataView, tell the user what we're doing
+ toolStripStatusLabel1.Text = "Filtering and sorting...";
+ Application.DoEvents();
+
+ // RS: Filter our system objects
+ allobjectsview.RowFilter = "([Schema] <> 'INFORMATION_SCHEMA') AND ([Schema] <> 'sys') AND" +
+ "([Type] IN ('ExtendedStoredProcedure', 'PartitionFunction', 'PartitionScheme', " +
+ "'SqlAssembly', 'StoredProcedure', 'Table', 'Trigger', 'UserDefinedAggregate', " +
+ "'UserDefinedDataType', 'UserDefinedFunction', 'UserDefinedType', 'View'))";
+ // RS: Sort by the type of object we're dealing with
+ allobjectsview.Sort = "[Type]";
+
+ // RS: This is an optional RowFilter that has Users and Schema's in it - but you end up with stuff
+ // that is Microsoft supplied, and it's really not worth our while adding an entire section that
+ // iterates through objects and checks their IsSystemSupplied property - because then we'd also need
+ // to ensure that IsSystemSupplied is part of the default properties that SMO fetches - an altogether
+ // unnecessary exercise, and one that would noticeably slow SMO down.
+
+ /* allobjects.RowFilter = "([Schema] <> 'INFORMATION_SCHEMA') AND ([Schema] <> 'sys') AND" +
+ "([Type] IN ('ExtendedStoredProcedure', 'PartitionFunction', 'PartitionScheme', 'Trigger', " +
+ "'Schema', 'SqlAssembly', 'StoredProcedure', 'Table', 'User', 'UserDefinedAggregate', " +
+ "'UserDefinedDataType', 'UserDefinedFunction', 'UserDefinedType', 'View'))";*/
+
+ dgAvailableObjects.DataSource = allobjectsview;
+
+ foreach (DataGridViewRow dgr in dgAvailableObjects.Rows)
+ {
+ // RS: Some more chunky clbType populating code...saves us the hassle of having to add it when
+ // we're populating, as we don't know whether or not we have triggers until later.
+ if ((!clbType.Items.Contains(dgr.Cells[3].Value.ToString())) && (dgr.Cells[3].Value.ToString() != string.Empty))
+ {
+ clbType.Items.Add(dgr.Cells[3].Value.ToString());
+ }
+ }
+
+ // RS: Disable the Type list if it's empty
+ if (clbType.Items.Count > 0)
+ {
+ clbType.Enabled = true;
+ }
+ else
+ {
+ clbType.Enabled = false;
+ }
+
+ // RS: Hide the URN from the DataGrid
+ dgAvailableObjects.Columns[4].Visible = false;
+ // RS: Set column widths on the DataGrid
+ dgAvailableObjects.Columns[0].Width = 50;
+ dgAvailableObjects.Columns[1].Width = 130;
+ dgAvailableObjects.Columns[2].Width = 316;
+ dgAvailableObjects.Columns[3].Width = 200;
+ toolStripStatusLabel1.Text = "Ready";
+ }
+
+ private SqlConnection GetConnection(string databaseName)
+ {
+ SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder();
+ sqlConnectionStringBuilder.DataSource = txtServerName.Text;
+ if (chkUseWindowsAuthentication.Checked)
+ {
+ sqlConnectionStringBuilder.IntegratedSecurity = true;
+ }
+ else
+ {
+ sqlConnectionStringBuilder.IntegratedSecurity = false;
+ sqlConnectionStringBuilder.UserID = txtUsername.Text;
+ sqlConnectionStringBuilder.Password = txtPassword.Text;
+ }
+
+ sqlConnectionStringBuilder.InitialCatalog = databaseName;
+ sqlConnectionStringBuilder.ApplicationName = "Scriptio";
+ SqlConnection sqlConnection = new SqlConnection(sqlConnectionStringBuilder.ConnectionString);
+ return sqlConnection;
+ }
+
+ private string GetConnectionString(string databaseName)
+ {
+ SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
+ csb.DataSource = txtServerName.Text;
+ if (chkUseWindowsAuthentication.Checked)
+ {
+ csb.IntegratedSecurity = true;
+ }
+ else
+ {
+ csb.IntegratedSecurity = false;
+ csb.UserID = txtUsername.Text;
+ csb.Password = txtPassword.Text;
+ }
+ csb.InitialCatalog = databaseName;
+ csb.ApplicationName = "Scriptio";
+ return csb.ConnectionString;
+ }
+
+ private void DdlDatabases_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ ComboBox comboxBox = (ComboBox)sender;
+ chkScriptAll.Checked = false;
+ if (comboxBox.SelectedIndex > 0)
+ {
+ PopulateObjects(txtServerName.Text, comboxBox.SelectedItem.ToString());
+ }
+ else
+ {
+ dgAvailableObjects.Rows.Clear();
+ }
+ }
+
+ private void btnScript_Click(object sender, EventArgs e)
+ {
+ // RS: This section has also been heavily modified and rewritten to use the Scripter object instead of
+ // iterating through predefined objects and using their .Script method. This gives us the added
+ // flexibility of being able to populate the allobjects DataTable with ANY object that has a valid
+ // URN, and the code will script it.
+ toolStripStatusLabel1.Text = "Preparing script...";
+ Application.DoEvents();
+
+ Server srv;
+ if (chkUseWindowsAuthentication.Checked)
+ {
+ srv = new Server(txtServerName.Text);
+ }
+ else
+ {
+ srv = new Server(new ServerConnection(txtServerName.Text, txtUsername.Text, txtPassword.Text));
+ }
+
+ string objectType = "";
+ string objectName = "";
+ string schema = "";
+ txtResult.Text = "";
+
+ result = new StringBuilder();
+
+ // RS: Instead of stepping through the dataset to see what's checked, we just use a DataView to limit
+ // the rows to only those that have the Script column equal to true.
+ DataView allobjectschecked = new DataView(allobjects);
+ // RS: Filter our system objects
+ allobjectschecked.RowFilter = "([Schema] <> 'INFORMATION_SCHEMA') AND ([Schema] <> 'sys') AND" +
+ "([Type] IN ('ExtendedStoredProcedure', 'PartitionFunction', 'PartitionScheme', " +
+ "'SqlAssembly', 'StoredProcedure', 'Table', 'Trigger', 'UserDefinedAggregate', " +
+ "'UserDefinedDataType', 'UserDefinedFunction', 'UserDefinedType', 'View')) " +
+ "AND [Script] = True";
+
+ dgAvailableObjects.EndEdit();
+ // RS: We use the DataView's count property rather than the deprecated function from the previous
+ // version of Scriptio.
+ int totalObjects = allobjectschecked.Count;
+ toolStripProgressBar1.Value = 0;
+ toolStripProgressBar1.Maximum = totalObjects;
+ result.EnsureCapacity(totalObjects * 4000);
+
+ // Delete the file if it already exists
+ if (File.Exists(txtSaveLocation.Text))
+ {
+ File.Delete(txtSaveLocation.Text);
+ }
+
+ ScriptingOptions baseOptions = new ScriptingOptions();
+ baseOptions.IncludeHeaders = chkIncludeHeaders.Checked;
+ baseOptions.Indexes = chkIndexes.Checked;
+ baseOptions.DriAllKeys = chkKeys.Checked;
+ baseOptions.NoCollation = !chkCollation.Checked;
+ baseOptions.SchemaQualify = chkSchemaQualifyCreates.Checked;
+ baseOptions.SchemaQualifyForeignKeysReferences = chkSchemaQualifyFK.Checked;
+ baseOptions.Permissions = chkPermissions.Checked;
+
+ if (rdoOneFile.Checked || rdoOnePerObject.Checked)
+ {
+ baseOptions.FileName = txtSaveLocation.Text;
+ baseOptions.AppendToFile = true;
+ }
+
+ ScriptingOptions dropOptions = new ScriptingOptions();
+ dropOptions.ScriptDrops = true;
+ dropOptions.IncludeIfNotExists = chkExistance.Checked;
+ dropOptions.SchemaQualify = chkSchemaQualifyDrops.Checked;
+
+ // RS: Set the encoding options for both the drop AND the base scripting options object. We have to
+ // do it on both, otherwise we have two different encodings in the same file, and we end up with a
+ // complete mess.
+ if (chkGenerateASCII.Checked)
+ {
+ dropOptions.Encoding = Encoding.ASCII;
+ baseOptions.Encoding = Encoding.ASCII;
+ }
+ else
+ {
+ dropOptions.Encoding = Encoding.Unicode;
+ baseOptions.Encoding = Encoding.Unicode;
+ }
+
+ // RS: Set the Scripter object up based on the connection to the server - the need for a Database
+ // object is deprecated.
+ Scripter scriptit = new Scripter(srv);
+ // RS: Setup a URN object - this doesn't work quite the way I expected it to, but I managed to find a
+ // code sample that had the index references. Now I understand it:)
+ Urn[] scripturn = new Urn[1];
+
+ if (rdoOneFile.Checked || rdoOnePerObject.Checked)
+ {
+ dropOptions.FileName = txtSaveLocation.Text;
+ dropOptions.AppendToFile = true;
+ }
+
+ // process each checked object
+ foreach (DataRowView row in allobjectschecked)
+ {
+ toolStripProgressBar1.Value++;
+
+ objectType = row[3].ToString();
+ objectName = row[2].ToString();
+ schema = row[1].ToString();
+ string fileName = "";
+
+ if (rdoOnePerObject.Checked)
+ {
+ // RS: Set the filename up based on whether we're using the static .sql extension, or the
+ // more dynamic SQL 2000 file extensions
+ if (chkNamingConventions.Checked)
+ {
+ switch (objectType)
+ {
+ case "StoredProcedure":
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".prc");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".prc");
+ }
+
+ break;
+
+ case "UserDefinedFunction":
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".udf");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".udf");
+ }
+
+ break;
+
+ case "View":
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".viw");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".viw");
+ }
+
+ break;
+
+ case "Table":
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".tab");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".tab");
+ }
+
+ break;
+
+ case "Trigger":
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".trg");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".trg");
+ }
+
+ break;
+
+ default:
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".sql");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".sql");
+ }
+
+ break;
+ }
+ }
+ else
+ {
+ if (schema.Length > 0)
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".sql");
+ }
+ else
+ {
+ fileName = Path.Combine(txtSaveLocation.Text, objectName + ".sql");
+ }
+ }
+
+ if (File.Exists(fileName))
+ {
+ File.Delete(fileName);
+ }
+
+ baseOptions.FileName = fileName;
+ dropOptions.FileName = fileName;
+ }
+
+ // RS: Tell the user what object we're scripting so they know when they hit a large object.
+ if (schema.Length > 0)
+ {
+ toolStripStatusLabel1.Text = $"Scripting: {schema}.{objectName}...";
+ }
+ else
+ {
+ toolStripStatusLabel1.Text = $"Scripting: {objectName}...";
+ }
+
+ // RS: Run DoEvents() *before* we start the scripting, so the user sees the update above.
+ Application.DoEvents();
+
+ // RS: Set the URN object equal to the URN string.
+ scripturn[0] = row[4].ToString();
+
+ if (chkDrop.Checked)
+ {
+ // RS: Set the Scripter options, as we don't pass it when we call the Script method.
+ scriptit.Options = dropOptions;
+ // RS: Call the Script method, and pass the URN.
+ AddLines(scriptit.Script(scripturn));
+ AddGo();
+ }
+
+ if (chkCreate.Checked)
+ {
+ // RS: As per above
+ scriptit.Options = baseOptions;
+ AddLines(scriptit.Script(scripturn));
+ AddGo();
+ }
+ }
+
+ txtResult.MaxLength = result.Length + 100;
+ txtResult.Text = result.ToString();
+ toolStripStatusLabel1.Text = "Ready";
+ tabControl1.SelectedTab = tabResult;
+ // RS: Null our scripting objects (not necessary, but I like it)
+ scriptit = null;
+ scripturn = null;
+ allobjectschecked.RowFilter = "";
+ Application.DoEvents();
+ }
+
+ private void AddLines(StringCollection strings)
+ {
+ foreach (string s in strings)
+ {
+ result.Append(Environment.NewLine + s);
+
+ if (s.StartsWith("SET QUOTED_IDENTIFIER") || s.StartsWith("SET ANSI_NULLS"))
+ result.Append(Environment.NewLine + "GO");
+ }
+ }
+
+ private void AddGo()
+ {
+ result.Append(Environment.NewLine + "GO" + Environment.NewLine + Environment.NewLine);
+ }
+
+ private void ChkScriptAll_CheckedChanged(object sender, EventArgs e)
+ {
+ CheckBox checkbox = (CheckBox)sender;
+ foreach (DataGridViewRow row in dgAvailableObjects.Rows)
+ {
+ row.Cells[0].Value = checkbox.Checked;
+ }
+ }
+
+ private void BtnPickDirectory_Click(object sender, EventArgs e)
+ {
+ if (rdoOneFile.Checked)
+ {
+ saveFileDialog1.ShowDialog();
+ txtSaveLocation.Text = saveFileDialog1.FileName.ToString();
+ }
+
+ if (rdoOnePerObject.Checked)
+ {
+ folderBrowserDialog1.ShowDialog();
+ txtSaveLocation.Text = folderBrowserDialog1.SelectedPath.ToString();
+ }
+ }
+
+ private void RdoOneFile_CheckedChanged(object sender, EventArgs e)
+ {
+ txtSaveLocation.Text = string.Empty;
+ chkNamingConventions.Enabled = false;
+ }
+
+ private void RdoNoFiles_CheckedChanged(object sender, EventArgs e)
+ {
+ txtSaveLocation.Text = "";
+ chkNamingConventions.Enabled = false;
+ }
+
+ private void RdoOnePerObject_CheckedChanged(object sender, EventArgs e)
+ {
+ txtSaveLocation.Text = "";
+ chkNamingConventions.Enabled = true;
+ }
+
+ private void BtnCopyClipboard_Click(object sender, EventArgs e)
+ {
+ txtResult.SelectAll();
+ txtResult.Copy();
+ }
+
+ private void ChkUseWindowsAuthentication_CheckedChanged(object sender, EventArgs e)
+ {
+ CheckBox c = (CheckBox)sender;
+ if (c.Checked)
+ {
+ txtUsername.Enabled = false;
+ txtPassword.Enabled = false;
+ }
+ else
+ {
+ txtUsername.Enabled = true;
+ txtPassword.Enabled = true;
+ }
+ }
+
+ private void BtnSaveAs_Click(object sender, EventArgs e)
+ {
+ // RS: New code to save the scripted output.
+ if (saveFileDialog1.ShowDialog() == DialogResult.OK)
+ {
+ // RS: Use a StreamWriter, and push each line of resultant text into it.
+ StreamWriter sw;
+ // RS: Make sure our StreamWriter's encoding is configured based on the user's options
+ Encoding encoding;
+ encoding = chkGenerateASCII.Checked ? Encoding.ASCII : Encoding.Unicode;
+ sw = new StreamWriter(saveFileDialog1.FileName, false, encoding);
+ //if (chkGenerateASCII.Checked)
+ //{
+ // sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.ASCII);
+ //}
+ //else
+ //{
+ // sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.Unicode);
+ //}
+
+ foreach (string str in txtResult.Lines)
+ {
+ sw.WriteLine(str);
+ }
+
+ sw.Close();
+ }
+ }
+
+ private void Scriptio_Load(object sender, EventArgs e)
+ {
+ // RS: If we're building a debug build, set the server name to localhost and populate the database
+ // list - saves us the hassle if we're testing. Change this as necessary.
+#if (DEBUG)
+ txtServerName.Text = @"localhost";
+ PopulateDatabases(txtServerName.Text);
+#endif
+ }
+
+ private void ClbType_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ foreach (DataRow dataRow in allobjects.Rows)
+ {
+ // RS: Run throught the DataGrid and check anything that's been checked in the Type list
+ if (clbType.CheckedItems.Contains(dataRow[3].ToString()))
+ {
+ dataRow[0] = true;
+ }
+ else
+ {
+ dataRow[0] = false;
+ }
+ }
+ }
+
+ private void ClbSchema_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ foreach (DataRow dataRow in allobjects.Rows)
+ {
+ // RS: Run throught the DataGrid and check anything that's been checked in the Type list
+ if (clbSchema.CheckedItems.Contains(dataRow[1].ToString()))
+ {
+ dataRow[0] = true;
+ }
+ else
+ {
+ dataRow[0] = false;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Scriptio/FormMain.resx b/Scriptio/FormMain.resx
new file mode 100644
index 0000000..50db47a
--- /dev/null
+++ b/Scriptio/FormMain.resx
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 127, 17
+
+
+ 255, 17
+
+
+ 413, 17
+
+
+
+
+ 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
+ AD8AAAD/4AAB//AAA//wAAf/+EAP///4H/8=
+
+
+
\ No newline at end of file
diff --git a/Scriptio/Program.cs b/Scriptio/Program.cs
new file mode 100644
index 0000000..e4713aa
--- /dev/null
+++ b/Scriptio/Program.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Scriptio
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Scriptio());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Scriptio/Properties/AssemblyInfo.cs b/Scriptio/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..2abb8c9
--- /dev/null
+++ b/Scriptio/Properties/AssemblyInfo.cs
@@ -0,0 +1,52 @@
+///////////////////////////////////////////////////////////////////////////////////////////////
+// Scriptio - Script SQL Server 2005 objects
+// Copyright (C) 2005 Bill Graziano
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Scriptio")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("SQLTeam.com")]
+[assembly: AssemblyProduct("Scriptio")]
+[assembly: AssemblyCopyright("Copyright © 2006 Bill Graziano, 2008 Riccardo Spagni")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("be300a5a-d1e8-47b2-aa98-9be9d6647ff5")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("0.6.1.0")]
+[assembly: AssemblyFileVersion("0.6.1.0")]
diff --git a/Scriptio/Properties/Resources.Designer.cs b/Scriptio/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..ab74091
--- /dev/null
+++ b/Scriptio/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// Ce code a été généré par un outil.
+// Version du runtime :4.0.30319.42000
+//
+// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
+// le code est régénéré.
+//
+//------------------------------------------------------------------------------
+
+namespace Scriptio.Properties {
+ using System;
+
+
+ ///
+ /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
+ ///
+ // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
+ // à l'aide d'un outil, tel que ResGen ou Visual Studio.
+ // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
+ // avec l'option /str ou régénérez votre projet VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Scriptio.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Remplace la propriété CurrentUICulture du thread actuel pour toutes
+ /// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Scriptio/Properties/Resources.resx b/Scriptio/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/Scriptio/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Scriptio/Properties/Settings.Designer.cs b/Scriptio/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..10b8b67
--- /dev/null
+++ b/Scriptio/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// Ce code a été généré par un outil.
+// Version du runtime :4.0.30319.42000
+//
+// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
+// le code est régénéré.
+//
+//------------------------------------------------------------------------------
+
+namespace Scriptio.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Scriptio/Properties/Settings.settings b/Scriptio/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/Scriptio/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Scriptio/Properties/app.manifest b/Scriptio/Properties/app.manifest
new file mode 100644
index 0000000..c212930
--- /dev/null
+++ b/Scriptio/Properties/app.manifest
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Scriptio/Scriptio.csproj b/Scriptio/Scriptio.csproj
new file mode 100644
index 0000000..5297607
--- /dev/null
+++ b/Scriptio/Scriptio.csproj
@@ -0,0 +1,338 @@
+
+
+ Debug
+ AnyCPU
+ 9.0.21022
+ 2.0
+ {D00DC776-3386-4146-9AD8-8408FA0F5FD7}
+ WinExe
+ Properties
+ Scriptio
+ Scriptio
+ Scriptio.Program
+ LocalIntranet
+ true
+ false
+ 9412EB75522B8E2E99789CAAA0866DF4D172210C
+ Scriptio_1_TemporaryKey.pfx
+ false
+ wi0054-48.ico
+ http://timestamp.verisign.com/scripts/timstamp.dll
+
+
+
+
+ 3.5
+ c:\temp\
+ true
+ Disk
+ false
+ Background
+ 30
+ Days
+ true
+ false
+ true
+ http://weblogs.sqlteam.com/billg/archive/2005/11/22/8414.aspx
+ Scriptio
+ SQLTeam.com
+ false
+ default.htm
+ 4
+ 0.5.5.%2a
+ false
+ true
+ v4.8
+
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+
+ ..\packages\Azure.Core.1.6.0\lib\net461\Azure.Core.dll
+
+
+ ..\packages\Azure.Identity.1.3.0\lib\netstandard2.0\Azure.Identity.dll
+
+
+ ..\packages\Microsoft.Bcl.AsyncInterfaces.1.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll
+
+
+
+ ..\packages\Microsoft.Data.SqlClient.3.0.0\lib\net461\Microsoft.Data.SqlClient.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.Data.Tools.Sql.BatchParser.dll
+
+
+ ..\packages\Microsoft.Identity.Client.4.22.0\lib\net461\Microsoft.Identity.Client.dll
+
+
+ ..\packages\Microsoft.Identity.Client.Extensions.Msal.2.16.5\lib\net45\Microsoft.Identity.Client.Extensions.Msal.dll
+
+
+ ..\packages\Microsoft.IdentityModel.JsonWebTokens.6.8.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll
+
+
+ ..\packages\Microsoft.IdentityModel.Logging.6.8.0\lib\net461\Microsoft.IdentityModel.Logging.dll
+
+
+ ..\packages\Microsoft.IdentityModel.Protocols.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.dll
+
+
+ ..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
+
+
+ ..\packages\Microsoft.IdentityModel.Tokens.6.8.0\lib\net461\Microsoft.IdentityModel.Tokens.dll
+
+
+ ..\packages\Microsoft.SqlServer.Assessment.1.0.305\lib\net462\Microsoft.SqlServer.Assessment.dll
+
+
+ ..\packages\Microsoft.SqlServer.Assessment.Authoring.1.0.282\lib\net462\Microsoft.SqlServer.Assessment.Types.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.ConnectionInfo.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Dmf.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Dmf.Common.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.Assessment.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.Collector.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.CollectorEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.HadrData.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.HadrModel.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.RegisteredServers.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.Sdk.Sfc.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.SqlScriptPublish.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEvent.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEventDbScoped.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEventDbScopedEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEventEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.PolicyEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.RegSvrEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.ServiceBrokerEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Smo.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Smo.Notebook.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SmoExtended.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SqlClrProvider.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SqlEnum.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SqlWmiManagement.dll
+
+
+ ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.WmiEnum.dll
+
+
+ ..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll
+
+
+
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
+
+
+
+ ..\packages\System.Configuration.ConfigurationManager.4.7.0\lib\net461\System.Configuration.ConfigurationManager.dll
+
+
+
+
+
+
+ ..\packages\System.Diagnostics.DiagnosticSource.4.6.0\lib\net46\System.Diagnostics.DiagnosticSource.dll
+
+
+
+
+ ..\packages\System.IdentityModel.Tokens.Jwt.6.8.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll
+
+
+ ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll
+
+
+
+
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
+
+
+ ..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll
+
+
+ ..\packages\System.Security.Cryptography.ProtectedData.4.5.0\lib\net461\System.Security.Cryptography.ProtectedData.dll
+
+
+ ..\packages\System.Security.Permissions.4.7.0\lib\net461\System.Security.Permissions.dll
+
+
+ ..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll
+
+
+
+ ..\packages\System.Text.Encodings.Web.4.7.2\lib\net461\System.Text.Encodings.Web.dll
+
+
+ ..\packages\System.Text.Json.4.6.0\lib\net461\System.Text.Json.dll
+
+
+ ..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
+
+
+
+ ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
+
+
+
+
+
+
+
+
+ Form
+
+
+ AboutForm.cs
+
+
+ Form
+
+
+ FormMain.cs
+
+
+
+
+ True
+ True
+ Settings.settings
+
+
+ Designer
+ AboutForm.cs
+
+
+ Designer
+ FormMain.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+ False
+ .NET Framework 2.0 %28x86%29
+ true
+
+
+ False
+ .NET Framework 3.0 %28x86%29
+ false
+
+
+ False
+ .NET Framework 3.5
+ false
+
+
+
+
+
+
+
+
+
+
+
+ Ce projet fait référence à des packages NuGet qui sont manquants sur cet ordinateur. Utilisez l'option de restauration des packages NuGet pour les télécharger. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkID=322105. Le fichier manquant est : {0}.
+
+
+
+
+
\ No newline at end of file
diff --git a/Scriptio/app.config b/Scriptio/app.config
new file mode 100644
index 0000000..ae7bddd
--- /dev/null
+++ b/Scriptio/app.config
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Scriptio/fr0004/gif/wi0054-16.gif b/Scriptio/fr0004/gif/wi0054-16.gif
new file mode 100644
index 0000000..73a70aa
Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-16.gif differ
diff --git a/Scriptio/fr0004/gif/wi0054-24.gif b/Scriptio/fr0004/gif/wi0054-24.gif
new file mode 100644
index 0000000..79d9407
Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-24.gif differ
diff --git a/Scriptio/fr0004/gif/wi0054-32.gif b/Scriptio/fr0004/gif/wi0054-32.gif
new file mode 100644
index 0000000..c89ec61
Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-32.gif differ
diff --git a/Scriptio/fr0004/gif/wi0054-48.gif b/Scriptio/fr0004/gif/wi0054-48.gif
new file mode 100644
index 0000000..c902f48
Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-48.gif differ
diff --git a/Scriptio/fr0004/ico-32bit/wi0054-16.ico b/Scriptio/fr0004/ico-32bit/wi0054-16.ico
new file mode 100644
index 0000000..5169125
Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-16.ico differ
diff --git a/Scriptio/fr0004/ico-32bit/wi0054-24.ico b/Scriptio/fr0004/ico-32bit/wi0054-24.ico
new file mode 100644
index 0000000..fc2cfe8
Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-24.ico differ
diff --git a/Scriptio/fr0004/ico-32bit/wi0054-32.ico b/Scriptio/fr0004/ico-32bit/wi0054-32.ico
new file mode 100644
index 0000000..2692985
Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-32.ico differ
diff --git a/Scriptio/fr0004/ico-32bit/wi0054-48.ico b/Scriptio/fr0004/ico-32bit/wi0054-48.ico
new file mode 100644
index 0000000..a7b099f
Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-48.ico differ
diff --git a/Scriptio/fr0004/ico-8bit/wi0054-16.ico b/Scriptio/fr0004/ico-8bit/wi0054-16.ico
new file mode 100644
index 0000000..6f5782e
Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-16.ico differ
diff --git a/Scriptio/fr0004/ico-8bit/wi0054-24.ico b/Scriptio/fr0004/ico-8bit/wi0054-24.ico
new file mode 100644
index 0000000..314a1cc
Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-24.ico differ
diff --git a/Scriptio/fr0004/ico-8bit/wi0054-32.ico b/Scriptio/fr0004/ico-8bit/wi0054-32.ico
new file mode 100644
index 0000000..8aea47c
Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-32.ico differ
diff --git a/Scriptio/fr0004/ico-8bit/wi0054-48.ico b/Scriptio/fr0004/ico-8bit/wi0054-48.ico
new file mode 100644
index 0000000..7d71c47
Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-48.ico differ
diff --git a/Scriptio/fr0004/png/wi0054-16.png b/Scriptio/fr0004/png/wi0054-16.png
new file mode 100644
index 0000000..51fe701
Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-16.png differ
diff --git a/Scriptio/fr0004/png/wi0054-24.png b/Scriptio/fr0004/png/wi0054-24.png
new file mode 100644
index 0000000..c2b9b62
Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-24.png differ
diff --git a/Scriptio/fr0004/png/wi0054-32.png b/Scriptio/fr0004/png/wi0054-32.png
new file mode 100644
index 0000000..1a88fc8
Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-32.png differ
diff --git a/Scriptio/fr0004/png/wi0054-48.png b/Scriptio/fr0004/png/wi0054-48.png
new file mode 100644
index 0000000..55064a9
Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-48.png differ
diff --git a/Scriptio/icon.txt b/Scriptio/icon.txt
new file mode 100644
index 0000000..796de23
--- /dev/null
+++ b/Scriptio/icon.txt
@@ -0,0 +1,3 @@
+The icon used here was downloaded from http://www.icongalore.com/software-icons/free-icons.htm.
+
+It is listed as a free icon and usable for non-commercial applications.
\ No newline at end of file
diff --git a/Scriptio/license.txt b/Scriptio/license.txt
new file mode 100644
index 0000000..ba04e2f
--- /dev/null
+++ b/Scriptio/license.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Scriptio/packages.config b/Scriptio/packages.config
new file mode 100644
index 0000000..14bff18
--- /dev/null
+++ b/Scriptio/packages.config
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Scriptio/wi0054-32.ico b/Scriptio/wi0054-32.ico
new file mode 100644
index 0000000..2692985
Binary files /dev/null and b/Scriptio/wi0054-32.ico differ
diff --git a/Scriptio/wi0054-48.ico b/Scriptio/wi0054-48.ico
new file mode 100644
index 0000000..a7b099f
Binary files /dev/null and b/Scriptio/wi0054-48.ico differ