日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

installshield安装文件的制作小技巧--附加数据库

發布時間:2025/3/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 installshield安装文件的制作小技巧--附加数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
installshield安裝文件的制作小技巧--附加數據庫 最近又一個項目接近尾聲,不過對方要求安裝必須傻瓜化,盡量不用手動配置。于是就的重新撿起兩三年沒有用過的installshield了。找到 installshield 12??于是,著手開始制作安裝包。因為是網站項目,所以,其他方面倒是問題不大,因為當年用installshield 6.2的時候,也是相當熟練的。最主要的有兩個方面:一、數據庫的安裝,因為我的數據庫里面有許多存儲過程和初始數據,所以不想直接用script來初始化。于是就想直接在安裝包中把數據庫文件和日志文件打包,然后在安裝時直接附加就行。二、修改web.config文件中的數據庫連接字符串和一些相關的參數,比如一些路徑相關的參數等等。


??????其中第一點經過摸索和總結,有兩種方法:1、直接使用自定義的函數,聲稱sql語句,然后調用osql.exe來執行。

函數如下:

function number CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd)
STRING szCmdLine,szWaitTxt;
begin
szWaitTxt=" 正在創建所需數據庫.";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);

if(g_bWinLogin) then
????szCmdLine = "/E??/S "+svSQLsvr+" /Q \"EXEC??sp_attach_db??@dbname??=??N'dlbj',@filename1??= N'"+TARGETDIR ^"mydb.MDF',@filename2??= N'"+TARGETDIR ^"dlbj_web_log.LDF'\"";
else
?? szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"EXEC??sp_attach_db??@dbname??=??N'dlbj',@filename1??= N'"+TARGETDIR ^"dlbj_web.MDF',@filename2??= N'"+TARGETDIR ^"mydb_log.LDF'\"";
endif;
//szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"EXEC??sp_attach_db??@dbname??=??N'dlbj',@filename1??= N'"+TARGETDIR ^"dlbj_web.MDF',@filename2??= N'"+TARGETDIR ^"dlbmydb_log.LDF'\"";

if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("數據庫創建失敗!請確您的系統中已安裝 Microsoft SQL Server 2000. 如仍無法解決,請聯系系統供應商!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
szWaitTxt=" 正在優化系統數據庫.";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use dlbj ; exec sp_updatestats\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("數據庫優化失敗!您可以在 sql查詢分析器中執行 use dlbj ; exec sp_updatestats 完成!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);??

return 0;

end;

然后在OnEnd中執行如下代碼:

if !MAINTENANCE then

CreateDataBase(g_szServer,g_szUser,g_szPassword);

endif;

其中,g_szServer,g_szUser,g_szPassword分別為,在installshield中數據庫設置界面(或者自定義窗口)中操作得到的服務器地址,用戶名和密碼。

2、直接在 安裝設計視圖中創建連接后,直接創建一個sqlscript,會在安裝的時候直接執行。這樣的話就的提前知道安裝的位置(這是不可能的),于是就直接寫成可替換的字符串,然后使用 text replacement 選項卡,設置替換項。其中,sqlscript如下:

USE master;
GO
-- Drop database if it exists.
IF EXISTS (SELECT name FROM sys.databases WHERE NAME = 'dmydb')
?? DROP DATABASE dmydb;
GO
CREATE DATABASE dlbj ON PRIMARY
?? (FILENAME =
??????'%TEXT_TO_BE_REPLACED_IN_THE_FILE%\dmydb.mdf')
?? LOG ON (FILENAME =
??????'%TEXT_TO_BE_REPLACED_IN_THE_FILE%\dmydb_log.LDF')
?? FOR ATTACH;
GO

其中:%TEXT_TO_BE_REPLACED_IN_THE_FILE% 是要替換為安裝目錄的字符串。

這里有個值得注意的地方,如果是installscript項目。那么,在text replacement 選項卡,替換后的內容不能直接設置為[INSTALLDIR]或者 [TARGETDIR],而是要同樣設置為一個替換變量,如:<USER_DATA>,即就是,把:%TEXT_TO_BE_REPLACED_IN_THE_FILE% 替換為:<USER_DATA>,然后在 installscript 的 Dlg_SdAskDestPath2: 代碼段中,執行如下語句即可。

TextSubSetValue ("<USER_DATA>", TARGETDIR , TRUE );

當時這里困擾我很長世界,最后還是上國外的網站上找到了解決方案。


對于第二點,則,直接使用函數:

function UpdateKey( svFilePath, svFindEntry, svNewEntry)
NUMBER nResult, nvLineNumber;
STRING WebConfigFile, svReturnLine;

begin
??// build the path to the Web.Config????
??WebConfigFile = svFilePath ^ "web.config";

??// search the file for the key we specify
??nResult = FileGrep( WebConfigFile, svFindEntry, svReturnLine, nvLineNumber, RESTART );
??switch(nResult)
?? case 0:
????// Since this line normally appears twice in our web.config file, we're
????// checking for the existence of a 2nd match and updating it instead.
????// If there is no 2nd match, go ahead and update the one we find.
????if ( svFindEntry = "connectionString" ) then
???? nResult = FileGrep( WebConfigFile, svFindEntry , svReturnLine, nvLineNumber, CONTINUE );
???? if ( nResult < 0 ) then
??????FileGrep( WebConfigFile, svFindEntry, svReturnLine, nvLineNumber, RESTART );
???? endif;
????endif;
??
????// once we find the key, update (replace) it with our new values
????if ( FileInsertLine( WebConfigFile, svNewEntry, nvLineNumber, REPLACE ) < 0 ) then
???? // hmmm we couldn't update the value of the key
???? MessageBox( "Unable to update Web.Config file.", SEVERE );
????endif;
?? case -2:
????// File Not Found
????MessageBox( "Web.Config file not found.", SEVERE );
?? case -4:
????// EOF reached
????MessageBox( svFindEntry + " key not found.", SEVERE );
?? default:
????//unknown error
????MessageBox( "An unknown error has occurred. The Web.Config file has NOT been updated.", SEVERE );
??endswitch;
end;

即可。

本文為轉貼,原帖地址為:http://www.cnblogs.com/culturenet/archive/2006/12/19/596930.html

轉載于:https://www.cnblogs.com/draeag/archive/2007/07/13/817286.html

總結

以上是生活随笔為你收集整理的installshield安装文件的制作小技巧--附加数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线免费播放av | 亚洲色图日韩精品 | 亚洲精品网站在线播放gif | 国产一区精品在线观看 | 韩国视频一区 | 欧美a√| 欧美在线视频a | 国产网站黄色 | 日本女人黄色片 | 一区二区在线免费看 | 亚洲 欧美 自拍偷拍 | 欧美三级午夜理伦三级老人 | a级在线看 | 国产123区| 久久久久久伦理 | av影院在线观看 | 最新在线黄色网址 | 亚洲精品久久久久avwww潮水 | 欧美日韩国产高清视频 | 久久尹人| 国产精品剧情av | 亚洲生活片 | 精东传媒在线观看 | 国产日韩欧美中文字幕 | 久福利 | 国产男女猛烈无遮挡免费视频 | 国产视频一区二区三区在线 | 歪歪视频在线观看 | 国产福利社 | 亚洲天堂网一区 | 动漫玉足吸乳羞免费网站玉足 | 国产看真人毛片爱做a片 | 在线视频一区二区三区四区 | 欧美黄色大全 | 麻豆黄色片 | 日韩毛片免费看 | 欧美乱码精品 | 熟女俱乐部五十路六十路av | 蜜桃网av| 日本激情网 | av手机免费观看 | 亚洲天堂国产精品 | 欧美人与动物xxxxx | 精品国产亚洲一区二区麻豆 | 色撸撸在线 | 欧美黑人三级 | 亚洲美女福利视频 | 国产xx在线观看 | 久热精品免费视频 | 亚洲精品高清视频在线观看 | 欧美变态口味重另类 | 中文字幕一区二区三区日韩精品 | 亚洲一卡二卡在线观看 | 欧美一区二区三区不卡视频 | 一级在线免费观看 | 成人区精品一区二区婷婷 | 91免费看网站 | www.四虎影视.com | 久久综合桃花网 | 娇喘顶撞深初h1v1 | 天天草比 | 又黄又色又爽的视频 | 欧美jjzz| 天堂在线国产 | 777在线视频 | 天天射天天草 | 99热这里只有精品18 | 国产乱码精品一品二品 | 性日本xxx| 国产高清在线视频 | 永久免费精品 | 国产精品久久久久久久久久久免费看 | 色妺妺视频网 | 五月深爱| 国产精品一区二区精品 | 永久免费看成人av的动态图 | 精品999久久久一级毛片 | 欧美aa视频 | 九色porny自拍视频在线播放 | 中文字幕二区 | 狠狠五月天 | 特级淫片裸体免费看冫 | 伊人五月婷婷 | 日韩欧美久久精品 | 狂野少女电影在线观看国语版免费 | 在线视频第一页 | 国产高清不卡一区 | 亚洲欧美国产高清 | 国产日韩欧美一二三区 | 老司机深夜福利网站 | 清冷男神被c的合不拢腿男男 | 超碰免费av | 精品久久香蕉国产线看观看亚洲 | 伊人精品在线 | 日日骚一区二区 | 91网入口| 少妇被躁爽到高潮无码文 | 午夜精品久久久内射近拍高清 | 亚洲高清视频免费观看 |