1. 程式人生 > >使用Setup Factory 打包軟體,安裝時自動建立資料庫及資料庫中的表(效果類似sql server中的附加資料庫操作)

使用Setup Factory 打包軟體,安裝時自動建立資料庫及資料庫中的表(效果類似sql server中的附加資料庫操作)

前提:已安裝Setup Fatory軟體、我使用的是 安裝工廠永樂漢化版,需要的請自行下載安裝

下面只列出關鍵性步驟,黃色字型較為關鍵,是一個出錯點

 

步驟一(關鍵):生成資料庫備份檔案,以及建表sql指令碼,和bat命令檔案

備份資料庫,生成檔案1,.bak檔案

生成建表語句.sql指令碼檔案

新建txt檔案,修改後綴名為.bat,並向其寫入指令碼

@echo off
rem %1 為路徑引數; 要還原的資料庫備份.bak檔案存放的目錄
rem %2 為版本號;如 6.1.2 ;
rem %3 為版本;  為“標準版”或“多探頭版” 

echo 正在啟動SQL SERVER服務...
net start mssqlserver

echo 正在建立資料庫,請稍等...
osql -E /Q "IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'InternalRadiationSystem') RESTORE DATABASE InternalRadiationSystem FROM DISK ='%1\Data\InternalRadiationSystem_V%2%3.bak' WITH MOVE 'InternalRadiationSystem' TO '%1\Data\InternalRadiationSystem.mdf',MOVE 'InternalRadiationSystem_log' TO '%1\Data\InternalRadiationSystem.ldf'"

rem echo 正在啟動SQL代理...
rem net start sqlserveragent

echo 正在更新SQL指令碼...
osql -E -i %1\Data\InternalRadiationSystem_V%2%3.sql
echo 資料庫建立成功!

在debug資料夾中新建Data資料夾,將這三個檔案放入此資料夾中,並修改名稱(注意和上面版本版本號一致)

步驟二:開啟並操作 安裝工廠永樂漢化版(Setup Fatory)

選擇打包程式所在資料夾(如需要把原始碼打包,則從程式所在根目錄開始,如D:\MySoft。如只打包執行,則選擇到debug或者relese目錄,如D:\MySoft\bin\Debug)

步驟三(關鍵):設定引數以及增加建立資料庫以及資料表程式碼

   

設定引數

對於打包可執行檔案的操作


 

步驟四:加入安裝步驟,進度條,操作為執行上面的bat檔案

對screens進行設定

 

(重要)下面的file.run方法中執行bat檔案時,其實相當於命令列輸入 ..\..\..\.bat 引數1 引數2 引數3

因為預設的安裝路徑為C:\Program Files\檔名,因路徑中包含空格,故執行時會將C:\Program看成執行檔案,空格後的視為引數,會出錯,所以我在步驟二中把安裝路徑的引數修改為自定義的

上面的程式碼文字,用於複製貼上

local AppFolder =File.GetShortName( SessionVar.Get("%AppFolder%"));
local ProductVer = SessionVar.Get("%ProductVer%");
local VersionType= SessionVar.Get("%VersionType%");
DlgProgressBar.SetPos(CTRL_PROGRESS_BAR_01, 30);
local Params=String.Concat(AppFolder,"");
	  Params=String.Concat(Params," ");
	  Params=String.Concat(Params,ProductVer);
	  Params=String.Concat(Params," ");
	  Params=String.Concat(Params,VersionType);
DlgProgressBar.SetPos(CTRL_PROGRESS_BAR_01, 50);
File.Run("%AppFolder%\\Data\\CreateDatabase_InternalRadiationSystem.bat", Params, "", SW_MINIMIZE, true); 

DlgProgressBar.SetPos(CTRL_PROGRESS_BAR_01, 100);

--執行安裝路徑Data資料夾下的CreateDatabase_InternalRadiationSystem.bat檔案,傳入 Params引數,就是開始屬性;裡面設定的引數(此句註釋不必複製)

步驟5:進行打包操作,點選打包按鈕即可

 

 

謝謝觀看,歡迎指正