原文 Inno Setup connection to the database and create

Description: the first half of this program in Inno Setup instance inside there, behind the database backup and restore inside the instance is not easy to find online, I spent a great difficulty sentence try out , please Zhuanzhai marked to indicate the respect of the individual labor. Thank you!

[Code] 

{--- SQLDMO ---} / / about SQLDMO of knowledge can go online 

const
/ / SQL server name, the name when installing SQL will be asked to enter the server name, the name you see when you open the SQL server on each machine is different, as I as shown below, but here we can use a generic The name is the (local) , Which means that the server is local. That's it. SQLServerName = '(LOCAL)';
SQLDMOGrowth_MB = 0; / / This is to create a button press event, this button is in the Setup Wizard page, create a configuration database "button
to procedure SQLDMOButtonOnClick (Sender: TObject);
var
/ / Used in some of the variables
SQLServer, Database, DBFile, LogFile: Variant;
IDColumn, NameColumn, Table, oBackup, oRestore: Variant;
db_path: string;
/ / Variable to store read the registry key value
ResultStr: String;
begin
{Create the main SQLDMO COM Automation object} / / Check if you installed SQL
try
SQLServer: = CreateOleObject ('SQLDMO.SQLServer');
except
RaiseException ('You did not install the SQL database.' # 13 # 13 '(Error''' + GetExceptionMessage +'' 'occurred)');
end; {Connect to the Microsoft SQL Server} / / Connect to SQL
SQLServer.LoginSecure: = True;
SQLServer.Connect (SQLServerName); / / MsgBox ('connection to SQL Server''' + SQLServerName +'' '.' MbInformation, MB_OK); {Setup a database} / / Create the SQL database file
Database: = CreateOleObject ('SQLDMO.Database');
Database.Name: = 'dbase'; / / To create a database name DBFile: = CreateOleObject ('SQLDMO.DBFile');
DBFile.Name: = 'ISData1';
/ / Database records
DBFile.PhysicalName: = 'c :/ program files / microsoft sql server / mssql / data / dbase_Data.MDF';
DBFile.PrimaryFile: = True;
DBFile.FileGrowthType: = SQLDMOGrowth_MB;
DBFile.FileGrowth: = 1; Database.FileGroups.Item ('PRIMARY'). DBFiles.Add (DBFile); LogFile: = CreateOleObject ('SQLDMO.LogFile');
LogFile.Name: = 'ISLog1';
/ / Database diary.
LogFile.PhysicalName: = 'c :/ program files / microsoft sql server / mssql / data / dbase_Log.LDF'; Database.TransactionLog.LogFiles.Add (LogFile); {Add the database} / / Add database
SQLServer.Databases.Add (Database); / / MsgBox ('Added database''' + Database.Name +'' '.', MbInformation, mb_Ok); / / Data backup
oBackup: = CreateOleObject ('SQLDMO.Backup'); / / create a backup object
oBackup.Database: = 'louyu'; / / To back up the database name
oBackup.Files: = 'f :/ louyu3.bak'; / / backup to
oBackup.BackupSetName: = 'louyu3.bak'; / / name of the backup
oBackup.BackupSetDescription: = 'bakDescription';
oBackup.Initialize: = true;
oBackup.SQLBackup (SQL Server); / / execute SQL backup operation / / Restore the data Highlights: / / Database backup file in a position to lay the package you want to restore the database to find the backup file first, then find the backup file before the software installation to where we need to know, which is the installation path. Installation in the registry to establish the relevant information, including software installation path recorded on the registry, please see the above write the INNO SETUP Registry Add read.
Why restore the database in this way, it seems to be around a circle, in fact, I also think that this may not be a good way, but I do not know any other way to get the data in the installation package ( file path) or software to be installed. {App}, {pf} such as this can not be directly used, why we have such a stupid way.
If any friends have a good way, please let me know. / / Get the installation path from the registry, according to the path found to restore the database backup file.
if RegQueryStringValue (HKLM, 'SOFTWARE / *******', 'Server', ResultStr) then
begin
ResultStr: = RemoveQuotes (ResultStr);
msgbox (resultstr, mbinformation, mb_ok);
try
oRestore: = CreateOleObject ('SQLDMO.Restore'); / / create a restore object
oRestore.Database: = 'dbase'; / / restore the database name
db_path: = resultstr + '/ database file / dbase.bak'; / / path of the backup file
The MsgBox (DB_PATH mbinformation, MB_OK); / / test to see the path right
oRestore.files: = db_path; / / Specify the backup file
oRestore.replacedatabase: = true;
oRestore.sqlrestore (sqlserver); / / perform the restore operation
MsgBox ('database restore was successful!', Mbinformation, MB_OK);
except
MsgBox ('database restore failed, please try again or consult the help documentation manual configuration!' Mbinformation, MB_OK);
end;
end;
end; / / Database creation and restore events finished, but it does not know when to perform intelligent, so we have to tell it when to perform. Here is the program is finished installing, At the end of the page BUTTON button, when this button is pressed, the database incident response.
{---}
/ / Create a button
procedure CreateButton (ALeft, ATop: Integer; ACaption: String; ANotifyEvent: TNotifyEvent);
begin
create with TButton.Create (WizardForm) do begin / / button object
Left: to = ALeft; / / Button's position and the width and height
Top: = ATop;
Width: = WizardForm.CancelButton.Width;
Height: = WizardForm.CancelButton.Height;
Caption: = ACaption; / / button name
OnClick: = ANotifyEvent;
/ / This is to create a button to specify a parent window, which means that it displayed in which the top of the page
Parent: = WizardForm.finishedPage; / / specified here is the end of the page of the form
end;
end; / / Initialization Wizard window
the procedure InitializeWizard ();
var
Left, Top, TopInc: Integer;
begin
Left: = WizardForm.WelcomeLabel2.Left;
TopInc: = WizardForm.CancelButton.Height + 8;
Top: = WizardForm.WelcomeLabel2.Top + WizardForm.WelcomeLabel2.Height - 4 * TopInc;
/ / Created above button displayed, and assign it a response event
CreateButton (Left, Top, '& configuration SQL database' _AT_ SQLDMOButtonOnClick);
Top: = Top + TopInc;
end;

  

Inno Setup connection to the database and create的更多相关文章

  1. INNO SETUP数据库的连接与创建

    原文:INNO SETUP数据库的连接与创建 说明一下:这块程序的前半部分在INNO SETUP的实例里面就有,而后面如果对数据库进行备份和还原在实例里面没有,在网上也不好找,是本人费了好大劲一句一句 ...

  2. 用Inno Setup制作WEB程序安装包

    原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=tes ...

  3. 【转载】inno setup 水波纹效果,检测安装vcredist_x86.exe等

    以下inno setup脚本,实现了:1.水波纹效果 2.安装时检测是否安装其他版本,并在欢迎页面添加文字提示 4.检测安装vcredist_x86.exe  3.卸载时添加提示 ; 脚本由 Inno ...

  4. 一个简单的inno setup模板

    一.模板代码 基本功能包括多路径安装.多语言.自定义图标. [Setup] ShowLanguageDialog=yes AppCopyright=Copyright Reserved(C) , 36 ...

  5. Inno Setup怎样创建一个自动申请管理员身份运行的快捷

    如果你使用的是 Unicode 版本的 Inno Setup,那么以下是更为专业的解决方法.    这是 mlaan 提及的再一种方法. QUOTE(     CodeAutomation3.iss) ...

  6. 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转)

    以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转) ; Script generated by the Inno Setup 脚本向导. ; SEE THE DOCU ...

  7. Inno Setup使用技巧

    一.关于Inno Setup如何在安装时播放音乐 方法(1): 在脚本编译里的[Code]与[Files]段处添加以下代码: [Code] Function mciSendString(lpszCom ...

  8. 用inno Setup做应用程序安装包的示例脚本(.iss文件)(

    用innoSetup做应用程序安装包的示例脚本(.iss文件),具体要看innoSetup附带的文档,好象是pascal语言写的脚本. 示例1(应用程序.exe,客户端安装): ;{089D6802- ...

  9. inno setup介绍及官方网站地址

    使 用 笔 记 1.Inno Setup 是什么?Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞 ...

随机推荐

  1. 8年,属于 HTML 5 春天的到来悄悄!

    [核心提示] 在 8 年时间中,HTML 5 为整个行业都带来了什么.标准终于确定后又会产生什么样的变革呢? 微博微信Twitter对于非常多人来说,非常有可能在微信的朋友圈里玩过「围住神经猫」,也非 ...

  2. C++ Primer 学习笔记_38_STL实践与分析(12)--集成的应用程序容器:文本查询程序

    STL实践与分析 --容器的综合应用:文本查询程序 引言: 本章中最重点的实例.由于不须要用到multiset与multimap的内容.于是将这一小节提到了前面.通过这个实例程序,大师分析问题的智慧, ...

  3. Hadoop 它们的定义Writable NullpointerException

    Hadoop周边环境:Hadoop2.4 定义中的Hadoop的Writable时间,有时你需要使用数组,而不是简单的单一值或串.例如,下面的代码: package test; import java ...

  4. Gradle 2.0用户手册——总览(译)(转)

    2.1 特性 本章将介绍一系列Gradle的特性. 申明式构建和基于约定的构建 Gradle的核心是基于Groovy呈现了一种丰富的针对特定领域的语言,称之为Domain Specific Langu ...

  5. vs2010中文简体版下载链接(含中文msdn)

    昨天朋友说vs2010中文版能够下载了,自己開始还不相信,正好周末,于是就下载了试一下 安装了果然是中文版,本来是msdn订阅用户才干够下载的,感谢上传的网友. 文件名称 cn_visual_stud ...

  6. jQuery整理笔记5----jQuery大事

    一.大事 1.载入中DOM $(document).ready() 这个第一节里具体介绍了 2.事件绑定 jQuery定义了bind()方法作为统一的接口.用来为每个匹配元素绑定事件处理程序.其基本的 ...

  7. CI框架学习笔记

    打印SQL语句$this->dbRead->last_query(); 重映射方法正如上文所说,URI 的第二段通常决定控制器的哪个方法被调用.CodeIgniter 允许你使用 _rem ...

  8. PHP开发笔记

    PHP开发笔记 JSON数据的解析 $json_data = isset($_GET['json_data']) ? $_GET['json_data'] : null; $json_data=str ...

  9. Mule ESB-Content-Based Routing Tutorial(2)

    承接 Mule ESB-Content-Based Routing Tutorial(1) 五.执行应用程序  完毕创建,配置.并保存你的新的应用程序,您就能够在嵌入Mule的server上执行(包含 ...

  10. Codeforces 135A-Replacement(思维)

    A. Replacement time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...