برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

تغییر فایل xml در installshield

با فرض اینکه فایل 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>
دو تابع زیر مقدار ورژن را تغییر میدهد :
prototype UpdateWebConfigAttributes(); 
prototype ReplaceValueOf(OBJECT, STRING, STRING);

function UpdateWebConfigAttributes()
    OBJECT oDoc, oNode;
    NUMBER i;                 
    STRING sWebConfigFilePath;  
    BOOL successfulLoad;
begin  

    sWebConfigFilePath = "c:\\Web.config"; 

    if Is(FILE_EXISTS, sWebConfigFilePath) = FALSE then
        MessageBox("Could not find Web.config file.", 0);
    endif;

    // get values from public properties
    set oDoc = CreateObject("Msxml2.DOMDocument.4.0"); 
    if !IsObject(oDoc) then
        MessageBox("Could not create XML Document", 0);
        return -1;    
    endif;    

    oDoc.async = FALSE; 
    oDoc.setProperty("SelectionLanguage", "XPath");

    successfulLoad = oDoc.load(sWebConfigFilePath);
    if !successfulLoad then
        MessageBox("Could not load Web.config as an xml file", SEVERE);                        
        return -1;
    endif;
 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;

oNode.attributes.getNamedItem("value").value = valueToPutIn;
catch
MessageBox("Could not set '" + xPath + "' with '" + valueToPutIn + "'", SEVERE);
endcatch;
end;




نصب sql 2008 r2 به صورت سایلنت

مراحل نصب را تا قسمت دریافت فایل 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 . زمانی که می خواهیم نصب در پوشه های پیش فرض انجام شود.

استفاده از radiobutton در installshield


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 در installshield


به عنوان نمونه اگر فایل ini با نام ConfigurationFile در مسیر جاری فایل نصب باشد  :


[general]
title="1234"

کد زیر را برای تغییر دادن مقادیر فایل می نویسیم :


    WriteProfString(SRCDIR^"my folder\\ConfigurationFile.ini",

         "general",

         "title",

         "\""+1111+"\"") ;

استفاده از فایل ini در دلفی

به عنوان نمونه اگر فایل ini با نام ConfigurationFile به صورت زیر باشد :


[general]
title="1234"

کد زیر را برای تغییر دادن مقادیر فایل می نویسیم :


var path,value :string;

    IniFile : TIniFile;

begin

  value:='1111';

  path:=ExtractFilePath(Application.ExeName);

  try

    IniFile:=TIniFile.Create(path+'\ConfigurationFile.ini');

    inifile.WriteString('general','title',value);

  finally

    inifile.Free;

     close;

  end;