دوست عزير براي اين کار کافيه در قسمت Server Configuration -> SQL Scripts يه اسکريپت جديد بسازين و بعد کد زير رو در برگه Script کپي کنيد:
use [master]
GO
CREATE DATABASE TESTDB ON
( FILENAME = N'%appfolder%\DB\DCMDB.mdf' ),
( FILENAME = N'%appfolder%\DB\DCMDB_log.ldf' )
FOR ATTACH
GO
بعد توي برگه Text Replacement يه عنوان جديد بسازين:
Find What: %appfolder%
Replace With: [TARGETDIR]
البته ممکنه اون کد مسير فايل رو براي Attach پيدا نکنه در نتيجه شما مجبوريد راه دوم رو امتحان کنيد که 100% جواب ميده:
use [master]
GO
CREATE DATABASE TESTDB ON
( FILENAME = N'%dbfolder%\DB\DCMDB.mdf' ),
( FILENAME = N'%dbfolder%\DB\DCMDB_log.ldf' )
FOR ATTACH
GO
در مرحله بعد وارد برگه Text Replacement بشين و يه replacement با مشخصات زير وارد کنيد:
Find What: %dbfolder%
Replace With: [Z_TARGETDIR]
تابع زير رو در Install Script ايجاد کنيد :
export prototype GetTARGETDIR(HWND);
function GetTARGETDIR(hMSI)
STRING svPropValue,svTemp;
NUMBER nvBuffer;
begin
svTemp = TARGETDIR;
StrRemoveLastSlash ( svTemp );
MsiSetProperty(hMSI,"Z_TARGETDIR", svTemp);
nvBuffer = 256;
بعد توي قسمت Property Manager يه مشخصه به اسم Z_TARGETDIR ايجاد کن.
و در نهايت يه Custom Action از نوع New InstallScript بساز و اسم تابع GetTARGETDIR رو بهش بده و Install Exec Sequence رو برابر با <First Action> قرار بده.
تموم شد.
روش دوم سخت تره ولي OK.