關鍵字 msi安裝資料庫
原作者姓名 李爭
介紹本文主要介紹如何通過新增自定義動作讓msi安裝包自動安裝資料庫。
正文資料庫(以sql server為例)的安裝通常有以下幾種辦法: 通過資料庫備份恢復資料庫、通過附加資料庫檔案、執行指令碼安裝。
在這幾種方式中,前兩種方式通常需要操作人員手工的操作,才能給資料庫系統新增資料庫。這樣一來提高了對軟體使用者的要求,並且還具有賬號許可權的問題(只有資料庫管理員等一系列具有很高許可權的賬號才允許有恢復、附加資料庫能力)。所以,通過執行資料庫安裝指令碼安裝資料庫是一種比較靈活的選擇。
在visual studio.*** 中為我們提供了安裝和部署應用程式的專案模板,通過setup project專案模板可以建立msi安裝包。要想讓msi安裝包具有安裝資料庫的功能,那就只有使用自定義動作來完成了。
步驟如下:
第一、要建立乙個類庫工程(class library)。為的是建立乙個能讓msi安裝包呼叫的程式集。這個程式集中的類需要派生於system.configuration.install.installer。這個installer類是所有自定義動作類的基類。
第二、在這個專案中編寫乙個資料庫安裝函式。其主要原理是使用了sql server的控制台工具osql.exe。通過-e引數進行信任登陸,通過-i引數讓osql.exe去執行乙個資料庫指令碼檔案。由於安裝包的位置是不定的(使用者可以把msi檔案放到硬碟的任何乙個位置上)。所以,要利用.***反射臨時得到當前安裝包的位置。具體**如下:
//得到當前正在執行的程式集例項
system.reflection.assembly assembly = system.reflection.assembly.getexecutingassembly();
//得到當前程式集的路徑
string path = assembly.location;
//去掉本程式集的檔名
path = path.replace("installdb.dll","");
//加上指令碼檔案的檔名
string sqlpath = path + "demosql.sql";
//建立資料庫安裝程序
system.diagnostics.process p = new process();
//設定程序引數
p.startinfo = new processstartinfo("osql.exe"," -e -i "+sqlpath);
//開啟程序
p.start();
正文完
附件:
msi安裝程式安裝引數
windows r installer.v 3.01.4000.1830 msiexec option optional parameter 安裝選項 安裝或配置產品 a 管理安裝 在網路上安裝產品 j t g 播發產品 m 播發到所有使用者,u 播發到當前使用者 解除安裝產品 顯示選項 quiet...
NSIS安裝msi檔案
安裝包中需要安裝activeperl 5.10.0.1002 mswin32 x86 283697.msi檔案,用exec exewait exeshell直接呼叫都不行,google了一下發現baidu裡其實有講 windows r installer.v 3.01.4000.1823 msiex...
資料庫安裝
mysql許可權 grant語法 grant 許可權 on 資料庫.to 使用者名稱 登入主機 identified by 密碼 許可權 all,alter,create,drop,select,update,delete 新增使用者 許可權為usage,即為 無許可權 想要建立乙個沒有許可權的使用...