با فرض اینکه فایل xml به صورت زیر باشد
<?xml version="1.0" encoding="utf-8"?>
<platformIDxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<type>35</type>
<manufacturer>14</manufacturer>
<SerialNumber>
<version>2</version>
</SerialNumber>
</platformID>
ReplaceValueOf(oDoc, "//platformID/SerialNumber/version", "1");
oDoc.save(sWebConfigFilePath);
set oDoc = NOTHING;
end;
function ReplaceValueOf(oDoc, xPath, valueToPutIn)
OBJECT oNode;
begin
set oNode = oDoc.selectNodes(xPath)(0);
try
-- در صورتی که ورژن دارای خصوصیتی به نام نوع باشد خط زیر را اجرا میکنیم
-- oNode.attributes.getNamedItem("kind").value = valueToPutIn;
catch
oNode.attributes.getNamedItem("value").value = valueToPutIn;
MessageBox("Could not set '" + xPath + "' with '" + valueToPutIn + "'", SEVERE);
endcatch;
end;
مراحل نصب را تا قسمت دریافت فایل ini پیش میرویم .
ConfigurationFile.ini را در کنار setup sql قرار میدهیم.
یک فایل bath برای اجرا سایلنت می سازیم و کد زیر را در ان مینویسیم و در کنارفایل ini میگذاریم . در صورتی که فایل bat در مسیر کنار دو فایل دیگر نباشد باید مسیر را نیز به کد زیر اضافه نماییم .
"setup.exe" /ConfigurationFile="ConfigurationFile.ini"
حالا کافیست فایل bat را اجرا کنیم
تنظیمات فایل ConfigurationFile.ini برای نسخه Enterprise:
· در صورتی که برای دیتابیس پسورد گذاشتیم خط زیر را با پسورد مدنظر وارد میکنیم :
SAPWD ="PASS"
· مقدار QUIET رو به True تغییر بدید (این پارامتر مشخص کننده این است که برنامه نصب ما به صورت سایلنت یا بدون دخالت کاربر یا به صورت unattended installation اجرا شود)
· مقدار SQLSYSADMINACCOUNTS رو به “BUILTIN\ADMINISTRATORS” تغییر بدید
· متغیر PID رو اضافه کنید و مقدار آن رو برابر با لایسنس یا سریال نرم افزار قرار در صورتی که برنامه شما کرک شده می باشد و هنگام نصب نرم افزار ، سریال آن هم وجود دارد ، نیازی به افزودن این خط نداریم
· پارامتر IACCEPTSQLSERVERLICENSETERMS رو اضافه کنید و مقدار آن رو برابر با “True” قرار دهید
· حذف پارامتر ADDCURRENTUSERASSQLADMIN ، زمانی که مقدار پارامتر SQLSYSADMINACCOUNTS تعیین شده باشد از این پارامتر نمی توان استفاده کرد. فقط در اینستالر Express جواب می دهد.
· حذف پارامتر UIMODE ، این پارامتر با پارامتر QUITE قابل اسفاده نمی باشد
· حذف پارامترهای INSTALLSHAREDDIR ، INSTALLSHAREDWOWDIR ، INSTANCEDIR . زمانی که می خواهیم نصب در پوشه های پیش فرض انجام شود.
BOOL bvCheck1,bvCheck2;
begin
Dlg_SdAskOptions:
bvCheck1= TRUE;
bvCheck2= FALSE;
nResult=AskOptions (EXCLUSIVE," Select your Type Below.","install ", bvCheck1,"not install", bvCheck2);
if (bvCheck1 = 1 )then
goto DLG_Install;
endif;
به عنوان نمونه اگر فایل ini با نام ConfigurationFile در مسیر جاری فایل نصب باشد :
[general]
title="1234"
کد زیر را برای تغییر دادن مقادیر فایل می نویسیم :
WriteProfString(SRCDIR^"my folder\\ConfigurationFile.ini",
"general",
"title",
"\""+1111+"\"") ;
عکسهایی که برای BillBoard نیاز دارید باید با نام Bbrd آغاز گردند .
حال در سربرگ Installation Designer ، از زیر شاخه Behavior And Logic ، گزینه Support Files را انتخاب کنید.در فریم وسط، گزینه Language Independent ، از زیر شاخه Support Files را انتخاب کنید! (گزینه اول)
در این قسمت تصویر مورد نیاز برای پس زمینه، موسیقی و کلیپ تصویری خود را وارد کنید.
دوباره در فریم وسط، گزینه Language Independent ، از زیر شاخه BillBoards
را انتخاب کنید! و تصاویری که میخواهید در حین نصب نمایش داده شوند را وارد
کنید! (دقت کنید که فایلها باید با Bbrd شروع شوند!)
اگر هم می خواهید تصویری به عنوان سرآغاز نمایش داده شود، در قسمت Splash Screen آن را وارد کنید!
حال بر روی InstallScript از زیر شاخه Behavior And Logic کلیک کرده تا وارد محیط کد نویسی شوید!
گذاشتن Background برای پروژه
برای اینکار ابتدا باید عکس خود را معرفی یا اعلان کنید! یعنی بعد از
(#include “ifx.h”) کد زیر را تایپ کنید: (شما باید کلماتی را که با حروف
بزرگ (Cap) نوشته شده اند، با حروف بزرگ بنویسید!)
#include "ifx.h"
#define BMP_PATH SUPPORTDIR ^ "Wallpaper.bmp"
#define BMP_ID 1
حال در تابع OnFirstUIBefore() کدهای زیر را اضافه کنید
function OnFirstUIBefore()
number Result1,nResult, nLevel, nSize, nSetupType;
string szTitle, szMsg, szOpt1, szOpt2, szLicenseFile;
string szName, szCompany, szTargetPath, szDir, szFeatures, szTargetdir,szTest;
BOOL bLicenseAccepted;
string svNumValue,svName,Svcustomer,SvServerSystemName;
number nvUser,nvType,nvSize;
begin
Enable (BACKGROUND);
SetColor(BACKGROUND,BLACK);
SetDisplayEffect (EFF_VERTSTRIPE);
PlaceBitmap( BMP_PATH , 1 , CENTERED , CENTERED , CENTERED );
Delay(5);
حالا کلیدهای Ctrl+F5 را بزنید و منتظر مشاهده نتیجه باشید!
(کدها بسیار واضع هستند و نیازی به توضیح نیست!)
برای اطلاعات بیشتر، Ctrl+I را زده و در پنجره ظاهر شده از قسمت Function
Category گزینه User Interface را انتخاب و در فریم سمت راست، گزینه
PlaceBitmap را انتخاب کنید!
تغییر یافتن اتوماتیک تصاویر در حین نصب
این مرحله نیاز به کدنویسی ندارد! کافیست شما تصاویر خود را در قسمت
SupportFiles بخش Billboards وارد کنید! دقت کنید که نام فایلها با Bbrd
شروع شوند!
قرار دادن موسیقی در حین نصب
شما ابتدا باید موسیقی خود را اعلان کنید! یعنی طبق مرحله قبل بعد از Include “ifx.h” کد زیر را وارد کنید!
#include "ifx.h"
#define Music SUPPORTDIR ^ "Music.wav"
#define Title1 "this is sample"
حال در تابع OnFirstUIBefore() کدهای زیر را اضافه کنید! (برای داشتن پس زمینه، نیازی به حذف کدهای مرحله قبل نیست و کدهای زیر را بعد از آنها وارد کنید.)
SetTitle (title1,26,WHITE)
if (PlayMMedia (MMEDIA_WAVE),Music,MMEDIA_PLAYASYNCH | MediaGetData,0)<0)
then
MessageBox("unable play music",WARNING)
نکته اضافی
SetTitle
فقط یک متن را روی صفحه نمایش میدهد که این متن در بالا اعلان شده است و تأثیری در پخش موسیقی ندارد
راه حلی که من استفاده کردم نوشتن اسکریپتی برای تغییر در رجیستری ویندوز است . که در مسیر HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLS erver\Client\ConnectTo
تمام الیاس های تعریف شده قرار دارد . حال برای اضافه کردن یک الیاس جدید کافی است که کد زیر را بنویسید :
RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE );
RegDBSetKeyValueEx ( "Software\\Microsoft\\MSSQLServer\\Client\\ConnectTo\\"
,str_name_system_server+"\\"+str_instansename1, REGDB_STRING, "DBNMPNTW,\\"+"\\data\\pipe\\MSSQL$"+str_instansename1+"\\sql\\query", -1 );
که str_instansename1 نام instance و str_name_system_server نام سرور است .
با RegDBSetDefaultRoot نام ریشه را مشخص می کنیم . RegDBSetKeyValueEx مقادیر خود را برای اضافه کردن مشخص می کنیم . که مسیر ، نام ، نوع ، مقدار و سایز را می دهیم . که با تغییر در کد می توانید هر مقادری را به رجیستری اضافه کنید .
شاید شما در installshield به مقداری که کاربر وارد می کند نیاز داشته باشید که برای این کار باید یک متغیر سراسری تعریف کنید . برای تعریف یک متغیر سراسری که بتوان از آن در تمام توابع و دیالوگ ها استفاده کرد مراحل زیر را طی کنید .
در Behavior and logic گزینه installscript را انتخاب کنید حالا در سمت راست سه شاخه می بینید files , function و properties بر رو ی properties راست کلیک و add new property را کلیک کنید . در قسمت property name نام متغیر را وارد کنید . در قسمت data type نوع آن را مشخص کنید و در Local Variable Name نامی را که در حین کدنویسی به آن نیاز دارید را تایپ کنید . در Default Value هم مقدار پیش فرض خود را قرار دهید . بر روی ok کلیک کنید . خواهید دید که نام متغیر به لیست properties شما اضافه خواهد شد . اگر اضافه نشد باید آن را تعریف کنید برای این کار کد زیر ررا با نام متغیر خود در بالای فرم تعریف کنید در اینجا متغیری با نام sale از نوع number تعریف شده است .
property(get,put) NUMBER sale();
NUMBER m_sale
و پنج تابع زیر هم اضافه خواهد شد .
function InitProperties()
begin
m_nsale = 0;
end;
function ReadProperties(PropertyBag)
begin
ReadNumberProperty(PropertyBag, "sale", m_nsale);
end;
function WriteProperties(PropertyBag)
begin
WriteNumberProperty(PropertyBag, "sale", m_nsale);
end;
function NUMBER get_sale()
begin
return m_nsale;
end;
function void put_sale(newVal)
begin
m_nsale = newVal;
end;
حال هر جا که احتیاج داشتید با فراخوانی متغیر خود (m_sale) می توانید از آن استفاده کنید .
افراد زیادی برای ساخت یک برنامه نصب از installshield استفاده می کنند . مزیت این نرم افزار نسبت به بقیه پشتیبانی قوی نسبت به بانک ها ی اطلاعاتی است اما نسبت به پشتیبانی فارسی کمی دچار مشکل می شویم . درباره این نرم افزار و نحوه کار کردن با آن در سایت های مختلف به صورت تکراری بیان شده است که من آنها را بیان نمی کنم . در اینجا چگونه فارسی کردن مراحل setup را یاد می گیریم . که کمترجایی عنوان شده است .
روش اول :
در زمان ایجاد پروژه جدید گزینه Basic MSI Project را انتخاب کنید در این صورت امکانات شما کمتر است . اما برای انجام یک پروژه کوچک مناسب است . در این محیط دست شما برای کدنویسی باز نیست . در نسخه 10.5 و 2008 این نرم افزار از منوی tools\add new language می توانید زبان فارسی را به برنامه خود اضافه کنید (البته شاید در نسخه های دیگر آن هم این گزینه باشد اما من در نسخه2009 پیدا نکردم اما در نسخه کامل آن زبان فارسی و یا عربی به لیس زبان ها یآن اضافه شده است و شما کافی است فارسی را نتخاب کنید) . حال اگر به لیست زبان های خود در Installation Localization نگاه کنید خواهید دید که زبان فارسی اضافه شده است . در Installation Designer قسمت User Interface بر روی Dialog کلیک کنید . اگر روی هر دیالوگ کلیک کنید خواهید دید که زبان فارسی در آنجا وجو دارد که با انتخاب هر آیتم و تغییر متن خصوصیت text به فارسی می توانید تمام پنجره های خود را فارسی کنید .
یک روش دیگر استفاده از تصاویر با پسوند BMP است که این عمل هم تنها در حالت Basic MSI Project درست عمل می کند . اما مزیت این روش این است که می توانید فرم های خود را به صورت دلخواه طراحی کنید برای تغییر زمینه دکمه ها هم باید خصوصیت Control Style آن را به Bitmap و یا Icon تغییر دهید .
روش دوم :
در زمان ایجاد پروژه بر روی Installscript Project کلیک کنید . در اینجا دیگر قادر نیستید در طراحی فارسی تایپ کنید اما با کد نویسی این امکان برای شما وجو دارد . در قسمت Installation Designer بر روی Behavior and Logic گزینه Installscript را انتخاب کنید . حال با توجه به دیالوگ هایی که مورد نیاز دارید و در حین نصب استفاده می کنید که بیشتر این دیالوگ ها خود در صورت عبور از تمامی مراحل در اینجا قرار میگیرند و با تغییر دو لیست باکس بالای صفحه می توانید رویدادهای را که می خواهید اتفاق افتند را انتخاب کنید . حالا هرجاییی که متنی قرار گرفته است را با متن فارسی خود جایگزین کنید . که در زیر کد دیالوگ welcom را به عنوان نمونه قرار داده ام . که به جای متن فارسی قبلا szTitle و szMsg وجود داشته است .
Dlg_SdWelcome:
szTitle = "";
szMsg = "";
//{{IS_SCRIPT_TAG(Dlg_SdWelcome)
nResult = SdWelcome("به برنامه نصب خوش آمدید" ,"نرم افزار بر روی سیستم شما نصب خواهد شد " );
//}}IS_SCRIPT_TAG(Dlg_SdWelcome)
if (nResult = BACK) goto Dlg_Start;