نمایش نتایج 1 تا 39 از 39

نام تاپیک: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

  1. #1
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    Question بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    سلام دوستان وقتتان بخیر
    یه برنامه ای هست مال چندسال قبله و با دلفی 7 نوشته شده و تحت شبکه به این صورت که کلاینت ها فایل exe برنامه را دارند و از طریق sp های روی بانک سرور ارتباط برقرار می کنند و کارشون را انجام می دهند . و مستقیم به سرور دسترسی ندارند . حالا اگر تغییری توی فایل برناهم exe ایجاد شود به اجبار باید این فایل توی تمام client ها کپی بشه که با آخرین تغییرات کار کنند .
    حالا سوالم :
    میخام برنامه را تغییر بدم و روی کلاینت وقتی اجرا میکنند ابتدا به سرور وصل بشه و اگر ورژن برنامه تغییری نکرده اجرا بشه و در غیر این صورت آخرین ورژن را دریافت و سپس اجرا کنه . برای این کار از چه طریقی عمل کنم و طرح را پیاده کنم ؟ از چه ابزار و روشی ؟
    دوستانی که تجربه در این زمینه دارند لطف کنند نظرشون را بفرمایند .
    ممنونم

  2. #2
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    با سلام
    با استفاده از ftp یک فایل txt رو از کلاینت به سرور بریز(محتویات txt ورژن برنامه هست) و بعد درسرور اون رو بخون اگر ورژن قدیمی بود با ftp یه ورژن جدید براش ارسال کن.
    اگر نبود که هیچی
    به جای txt میتونی از datasnap هم استفاده کنی برای خوندن ورژن و با ftp ورژن جدید بهش بدی

  3. #3

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    سلام.
    راه برای این کار زیاده، یکی از راهها اینه که برنامه ای که روی سرور هست، باید ورژن خودش رو جایی ثبت کنه، استفاده از ریسورس خودش توصیه نمی شه. دی بی مکان خوبیه برای این کار.
    کلاینت میاد از دی بی آخرین ورژن رو می پرسه، درون خود کلاینت هم ورژن بصورت هارد کد ثبت شده، با اون مقایسه می کنه و بقیه ماجرا.
    این که روی سرور چطور ثبت ورژن انجام می شه، هم کاری نداره. کافیه کسی که آخرین آپدیت رو انجام می ده این کار رو کنه تا تمام کلاینت ها در اولین کانکت متوجه بشن.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  4. #4
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    سلام.
    راه برای این کار زیاده، یکی از راهها اینه که برنامه ای که روی سرور هست، باید ورژن خودش رو جایی ثبت کنه، استفاده از ریسورس خودش توصیه نمی شه. دی بی مکان خوبیه برای این کار.
    کلاینت میاد از دی بی آخرین ورژن رو می پرسه، درون خود کلاینت هم ورژن بصورت هارد کد ثبت شده، با اون مقایسه می کنه و بقیه ماجرا.
    این که روی سرور چطور ثبت ورژن انجام می شه، هم کاری نداره. کافیه کسی که آخرین آپدیت رو انجام می ده این کار رو کنه تا تمام کلاینت ها در اولین کانکت متوجه بشن.
    ممنون آقای زالی و آقای عباسی عزیز
    خوب فرض کنیم تشخیص سمت کلاینت انجام شد و ورژن جدید موجود بوده حالا با توجه به اینکه از دلفی 7 استفاده میکنم با چه شیوه ای یا ابزاری فایل برنامه را از سرور به کلاینت انتقال بدم ؟ مشکل همزمانی دریافت توسط کلاینت ها را چطوری مدیریت کنم ؟

  5. #5

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    با سلام،
    توضیحات در رابطه با روش صحیح این کار زیاده و اگه در حد چند جمله بود همینجا راهنماییتون میکردم. در صورت تمایل پیام خصوصی بدین یا تماس بگیرید.
    موفق باشید.

  6. #6
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط hamid-nic مشاهده تاپیک
    خوب فرض کنیم تشخیص سمت کلاینت انجام شد و ورژن جدید موجود بوده حالا با توجه به اینکه از دلفی 7 استفاده میکنم با چه شیوه ای یا ابزاری فایل برنامه را از سرور به کلاینت انتقال بدم ؟ مشکل همزمانی دریافت توسط کلاینت ها را چطوری مدیریت کنم ؟
    شما اول همون طوری که ورژن رو یکجا ذخیره میکنید ip کسی که این ورژن رو داره هم همراهش ذخیره کنید بعد برای ارسال ورژن جدید باید ip که ذخیره شده رو به سرور ftp بدی تا به اون ارسال کنه.
    وقتی به ip ارسال کنی همزمان ارسال نمیکنه یکی یکی ارسال میکنه و احتمال تداخلش صفر میشه.بعد میتونی توی یک memo مدیریت کنی که الان فایل به کلاینت رسیده یانه در بین راه مشکل براش پیش اومده.
    روش send , receive در ftp هم توی تالار دلفی هست و راحت هستش خواستی کارباهاش رو توضیح میدم. یا نه خودت تحقیق کنی.

  7. #7
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    شما اول همون طوری که ورژن رو یکجا ذخیره میکنید ip کسی که این ورژن رو داره هم همراهش ذخیره کنید بعد برای ارسال ورژن جدید باید ip که ذخیره شده رو به سرور ftp بدی تا به اون ارسال کنه.
    وقتی به ip ارسال کنی همزمان ارسال نمیکنه یکی یکی ارسال میکنه و احتمال تداخلش صفر میشه.بعد میتونی توی یک memo مدیریت کنی که الان فایل به کلاینت رسیده یانه در بین راه مشکل براش پیش اومده.
    روش send , receive در ftp هم توی تالار دلفی هست و راحت هستش خواستی کارباهاش رو توضیح میدم. یا نه خودت تحقیق کنی.
    جناب عباسی عزیز ممنون از توضیحاتتون
    ببینید توی سرور همیشه آخرین ورژن هست یا گذاشته میشه پس اون آی پی که میگید میشه آی پی سرور درسته ؟ بعدم سرور ftp منظورتون چیه ؟ یعنی سوای این سرور ؟؟ سرور ftp باید بفرسته به کلاینت ؟ یا کلاینت ها از ftp درخواست کنند ؟ ببخشید من درست متوجه منظورتون نشدم .
    در ضمن فقط یک سرور بیشتر نداریم و sql server روی اون اجرا میشه .
    ممنون

  8. #8
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    خب این طوری که گفتید یعنی باید کامل توضیح بدم.
    به نام خداوند جان و خرد
    ببین دوست عزیز شما یک سیستم مثلا سیستم خودت رو به عنوان سرور قرار میدی(یا همون سیستمی که sqlserver روشه) یعنی در برنامه ات از کامپوننت ftpserver استفاده میکنی که قراره ورژن و ip کلاینت هایی که ورژنشون قدیمی هست رو بگیره (مثلا در فایل txt) بعد ورژن و ip رو توی یه متغیر میریزی و چک میکنی ببینی این ورژن قدیمی هست یانه.
    حال اگر ورژن قدیمی بود در برنامه ات یه کامپوننت ftp استفاده میکنی با استفاده از اون ورژن جدید که روی سیستمت داری رو براش میفرستی چه جوری؟
    به ip میفرستی که کلاینت همراه با ورژنش فرستاد بعد اون در برنامه اش کامپوننت ftp داره این ورژن جدید رو دریافت میکنه.
    به همین سادگی .سورس ارسال و دریافت فایل با Ftp توی اینترنت هست میتونی ببینی و ازش الگو بگیری.

  9. #9
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    خب این طوری که گفتید یعنی باید کامل توضیح بدم.
    به نام خداوند جان و خرد
    ببین دوست عزیز شما یک سیستم مثلا سیستم خودت رو به عنوان سرور قرار میدی(یا همون سیستمی که sqlserver روشه) یعنی در برنامه ات از کامپوننت ftpserver استفاده میکنی که قراره ورژن و ip کلاینت هایی که ورژنشون قدیمی هست رو بگیره (مثلا در فایل txt) بعد ورژن و ip رو توی یه متغیر میریزی و چک میکنی ببینی این ورژن قدیمی هست یانه.
    حال اگر ورژن قدیمی بود در برنامه ات یه کامپوننت ftp استفاده میکنی با استفاده از اون ورژن جدید که روی سیستمت داری رو براش میفرستی چه جوری؟
    به ip میفرستی که کلاینت همراه با ورژنش فرستاد بعد اون در برنامه اش کامپوننت ftp داره این ورژن جدید رو دریافت میکنه.
    به همین سادگی .سورس ارسال و دریافت فایل با Ftp توی اینترنت هست میتونی ببینی و ازش الگو بگیری.

    عجب به نام خدایی نوشتین !! خخخ
    خیلی ممنونم میرم روش کار میکنم به مشکل خوردم ازتون کمک میگیرم
    این ftpserver از مجموعه indy دیگه درسته ؟

  10. #10
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    بله کل مجموعه ftp از نوع indy هست

  11. #11

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    اگر شما دسترسی روی شبکه تون به نحوی هست که می تونید یکی از درایو ها رو مپ کنید، با تابع کپی به راحتی می تونید فایل رو انتقال بدید.
    در غیر این صورت با مجموعه ایندی می تونید این کار رو هم انجام بدید.
    باید یک سرویس دهنده روی مقصد بنویسید که پورتش روی مقصد باز باشه. برنامه به اون سرویس کانکت شده و چک می کنه ورژنش چیه، روی همون سوکتی که درخواست داده می تونه پاسخش رو بگیره.
    راه دیگه اینه که فایل رو در دی بی ذخیره کنید و برنامه فایل رو به فرم یک کوئری از روی دی بی بگیره و استریم فایل ذخیره کنه، نیازی به نوشتن سرویس روی سرور نیست.
    باید ببینید که ملزومات کاری که دارید انجام می دید چیه. این ساده ترین راه برای حالتی بود که مپ نمی تونید کنید ولی دی بی رو می بینید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    با سلام
    البته دوستان هم اشاره کردند

    یه روشی که من چند سال پیش برای حل این مشکل استفاده می کردم این بود که در بانک اطلاعاتی سمت سرور جدولی بود که در اون فایل هایی از برنامه په exe و pbl ها قرار داشتند (Varbinary)و فیلدی که تاریخ و ساعت به روز شدنشون و ورژن فایل ها رو داخلش نگه مداشتم در سمت کلاینت هم یه برنامه کوچک بود که در یک ترد جداگانه قبل از اجرای برنامه اصلی این ورژن ها رو با فایل های سمت کلاینت چک می کرد اگر ورژنی فایلی جدید شده بود اون رو حذف و دباره از بانک اطلاعاتی دریافت می کرد.
    من با این روش مشکلی نداشتم و خوب کار میکرد

  13. #13
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    راه دیگه اینه که فایل رو در دی بی ذخیره کنید و برنامه فایل رو به فرم یک  کوئری از روی دی بی بگیره و استریم فایل ذخیره کنه، نیازی به نوشتن سرویس  روی سرور نیست.

    ممنون آفای زالی عزیز
    این روش محدودیت حجم نداره احیانا؟ یعنی اگر فایل exe حجمش بالا باشه برای انتقال به سرور فشار نمیاره ؟
    اگر قرار شد به این سبک پیاده کنم باید روی یک دیتابیس جدا این کار را بکنم چون دیتابیس اصلی هر شب بک آپ اتوماتیک داره با این کار حجم بک آپ زیاد میشه .

  14. #14
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط amir_alaki مشاهده تاپیک
    با سلام
    البته دوستان هم اشاره کردند

    یه روشی که من چند سال پیش برای حل این مشکل استفاده می کردم این بود که در بانک اطلاعاتی سمت سرور جدولی بود که در اون فایل هایی از برنامه په exe و pbl ها قرار داشتند (Varbinary)و فیلدی که تاریخ و ساعت به روز شدنشون و ورژن فایل ها رو داخلش نگه مداشتم در سمت کلاینت هم یه برنامه کوچک بود که در یک ترد جداگانه قبل از اجرای برنامه اصلی این ورژن ها رو با فایل های سمت کلاینت چک می کرد اگر ورژنی فایلی جدید شده بود اون رو حذف و دباره از بانک اطلاعاتی دریافت می کرد.
    من با این روش مشکلی نداشتم و خوب کار میکرد
    دوست عزیز حجم فایلتون چه قدر بود ؟
    چندتا کلاینت داشتید ؟
    به طور متوسط چند وقت به چند وقت آپدیت برنامه داشتین ؟

  15. #15
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    باسلام

    ما تقریبا 40 تا bpl و dll و 8-7 exe داشتیم اگه اشتباه نکنم این جریان مال سال 84
    حجم فایل ها هم متغیر بود الان یادم نیست!!
    تعداد کلاینت ها مون هم فکر کنم اون موقه 100 همزمان بود، چون انبارهایی و مراکزی در کل ایران داشتیم و حتی بیرون از ایران هم نمایندگی داشتیم که همه با برنامه کار می کردن
    بعضی روزها 2-3 بار در روز هم آپدیت داشتیم البته اون موقع کاری کرده بودیم که در صورت آپدیت برنامه و یا ماژول با توجه به حساسیت ماژول ،در سرور به کلیه کاربران آنلاین در برنامه هشدار میدادیم و اونها هم برنامه هاشون رو می بستند و دباره اجرا می کردند.
    البته زیر ساخت شبکه خوبی داشتیم همه جا به هم شبکه بودیم و ActiveDirectory برقرار بود بین کلاینت ها و سرور و کل سیستم.

  16. #16

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    تفاوتی نمی کنه اگر از اس کیو ال استفاده می کنید یا از خصوصیات برنامه نویسی سوکت. به هر حال باید اون حجم اطلاعات از طریق خط ارتباطی شما منتقل بشه.
    این اتفاق مگر چقدر در ماه می افته؟ حجم برنامه ها رو هم می تونید با زیپ کردن یا پکینگ تا یک سوم و بیشتر کاهش بدید.
    می تونید پارت پارت بفرستید، و ...
    طریقه پیاده سازیش متنوعه، حتی می تونید از فایل استریم استفاده کنید، راه راحت استفاده از فیلد blob مثل varbinary و امثالهم است.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  17. #17
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    تفاوتی نمی کنه اگر از اس کیو ال استفاده می کنید یا از خصوصیات برنامه نویسی سوکت. به هر حال باید اون حجم اطلاعات از طریق خط ارتباطی شما منتقل بشه.
    این اتفاق مگر چقدر در ماه می افته؟ حجم برنامه ها رو هم می تونید با زیپ کردن یا پکینگ تا یک سوم و بیشتر کاهش بدید.
    می تونید پارت پارت بفرستید، و ...
    طریقه پیاده سازیش متنوعه، حتی می تونید از فایل استریم استفاده کنید، راه راحت استفاده از فیلد blob مثل varbinary و امثالهم است.
    ممنون آقای زالی عزیز
    بله sql استفاده می کنم
    از فیلد blob استفاده میکنم ببینم جواب میده یا نه .

  18. #18

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    blob منظورم نوع خاص نبود، از varbinary استفاده کنید مگر این که در نسخه شما موجود نباشه.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  19. #19
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    blob منظورم نوع خاص نبود، از varbinary استفاده کنید مگر این که در نسخه شما موجود نباشه.
    نسخه sql server 2012 است

  20. #20

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    varbinary استفاده کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  21. #21
    کاربر دائمی آواتار Valadi
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    فعلا در خدمت شما
    پست
    1,344

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    با سلام
    این لینک ببین

    یادم که یک کامپونتی هم این کار می کرد

  22. #22
    کاربر دائمی آواتار gbg
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    47
    پست
    692

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    آقا LMD یه کامپوننت داره اینکار رو میکنه
    من ازش استفاده کردم خوبه
    ولی بنا به دلایلی بعدها خودم با سوکت نوشتم و پکت بندی کردم

  23. #23
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    دوستان من برای این کار یک sp درج در بانک نوشتم و یک sp انتخاب کننده که تشریح اون در این تاپیک هست
    در مورد insert کردن مشکلی نیست ولی در مورد ذخیره اون فایل انتخاب شده در دیسک محلی مشکل دارم در واقع همون کار با stream هاست که متاسفانه به جواب نرسیدم ممنون میشم اگر دوستان راهنمایی کنند شرح مشکل را در همین لینک تاپیک بالا که گذاشتم هست

  24. #24
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    باسلام
    این کد فکر کنم مشکلتون رو حل کنه البته این برای عکس و فایل pdf مثال زده ولی خوب فرقی با مورد شما نداره
    فقط باید یکم ریزه کاری بهش اضافه کنید
    ورژن قبلی فایل روی کلاینت رو بدست بیارید و یا از تاریخ ساخته شدنش روی کلاینت (اگه وجود داره روی کلاینت) و فایل جدید رو بازیابی کنید


    procedure TForm1.Button1Click(Sender: TObject);
    var
    iPKey:integer;
    MStream:TMemoryStream;
    Sig1,Sig2: WORD; //16-bit unsigned integer = 2 bytes
    begin
    iPKey:=StrToInt(ediPKey.Text);
    ADODataSet1.Connection:=ADOConnection1;
    ADODataSet1.CommandText:='Select * From lmgTbl Where PKey=:param0';
    ADODataSet1.Parameters.ParamByName('param0').Value :=iPKey;
    ADODataSet1.Open;
    MStream:=TMemoryStream.Create;
    try
    TBlobField(ADODataSet1.FieldByName('Image')).SaveT oStream(MStream);
    MStream.Seek(0, soFromBeginning);
    MStream.Read(Sig1,2);
    MStream.Position := 2;
    MStream.Read(Sig2,2);
    if (Sig1=$4D42) then // little Endian format of the first 2 bytes of bitmap
    begin
    MStream.SaveToFile('Img'+IntToStr(iPKey)+'.bmp');
    ShowMessage('File saved as Bitmap');
    end
    else
    //ShowMessage('File is not Bitmap');
    if (Sig1 = $D8FF) and (Sig2 = $E0FF) then // little Endian format of the first 4 bytes of JPEG
    begin
    MStream.SaveToFile('Img'+IntToStr(iPKey)+'.jpg');
    ShowMessage('File saved as JPEG');
    end
    else
    if (Sig1 = $4947) and (Sig2 = $3846) then // little Endian format of the first 4 bytes of GIF
    begin
    MStream.SaveToFile('Img'+IntToStr(iPKey)+'.gif');
    ShowMessage('File saved as GIF');
    end
    else
    if (Sig1 = $5025)and (Sig2 = $4644) then // // little Endian format of the first 4 bytes of PDF
    begin
    MStream.SaveToFile('Doc'+IntToStr(iPKey)+'.pdf');
    ShowMessage('File saved as PDF');
    end
    else
    if (Sig1 = $CFD0) and (Sig2 = $E011) then // // little Endian format of the first 4 bytes of DOC
    begin
    MStream.SaveToFile('Doc'+IntToStr(iPKey)+'.doc');
    ShowMessage('File saved as DOC');
    end
    else
    if (Sig1 = $4B50) and (Sig2 = $0403) then // // little Endian format of the first 4 bytes of ZIP
    begin
    MStream.SaveToFile('Archive'+IntToStr(iPKey)+'.zip ');
    ShowMessage('File saved as ZIP');
    end
    else
    begin // unrecognized
    MStream.SaveToFile('File'+IntToStr(iPKey)+'.dat');
    ShowMessage('Unrecognized file format! '+#13+'saved with .dat extension');
    end;
    finally
    MStream.Free;
    end;
    end;
    end;





  25. #25
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    ممنونم بررسی می کنم اطلاعش را می دهم

  26. #26
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    دوست عزیز این کد شما خیلی خیلی جامع هست.
    به نظرم یکم باید سبکتر میگذاشتی تا دوست عزیزمون و دیگران راحتتر درک کنن

  27. #27
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    این کد میاد بایت اول اون فایل را میخونه و تشخیص میده که از چه نوعی بوده من اون قسمت هاش را جدا کردم از کد و فقط قسمت اصلی را بکار بردم و انجام دادم اما فایل exe ای که میسازه حجمش 1 بایته
    نمی دونم کجای کار مشکل داره
    یعنی درست در جدول insert نشده ؟

  28. #28
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    با سلام

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    دوست عزیز این کد شما خیلی خیلی جامع هست.
    به نظرم یکم باید سبکتر میگذاشتی تا دوست عزیزمون و دیگران راحتتر درک کنن
    حق با شماست، متشکر اشاره کردین

    در مورد ذخیره شدن 1 بایت شما MStream.Size رو قبل از سیو نگاه کنین ببینین چقدره؟
    چون کد خیلی کاری با مقادیر قایل نمی کنه فقط برای فهمیدن نوع فایل از هدر 4 بایت رو می خونه و بعد سیو میکنه

    با تشکر

  29. #29
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    روش خوبی برای ارسال ورژن جدید به کلاینت ها هست اما
    اگر توی این موقعی که داره خواندن بانک انجام میشه تا تبدیل به exe کنه یک بایت در بانک دچار فروریزش اطلاعاتی بشه ممکنه exe کارنکنه و کلاینت به مشکل بربخوره.
    بنظرم باید فایل یک جا با روش ftp یا datasnap ارسال بشه که یا فایل کلا نیاد و یا کامل بیاد.
    من خودم وقتی یه فایل رو میخوام از ویندوز به موبایلم بفرستم.با روش ftp که روی هر دو نوشته ام فایل رو انتقال میدم بدون هیچ دردسری(مثل زاپیا و shareIt ،چون با وای فای میفرستم سرعتش هم خوبه)
    اما اینکه در بانکه ممکنه حجم متنی توی بانک زیاد باشه و سیستم درگیر خواندن بشه و زمان زیادی ببره

  30. #30
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    روش خوبی برای ارسال ورژن جدید به کلاینت ها هست اما
    اگر توی این موقعی که داره خواندن بانک انجام میشه تا تبدیل به exe کنه یک بایت در بانک دچار فروریزش اطلاعاتی بشه ممکنه exe کارنکنه و کلاینت به مشکل بربخوره.
    بنظرم باید فایل یک جا با روش ftp یا datasnap ارسال بشه که یا فایل کلا نیاد و یا کامل بیاد.
    من خودم وقتی یه فایل رو میخوام از ویندوز به موبایلم بفرستم.با روش ftp که روی هر دو نوشته ام فایل رو انتقال میدم بدون هیچ دردسری(مثل زاپیا و shareIt ،چون با وای فای میفرستم سرعتش هم خوبه)
    اما اینکه در بانکه ممکنه حجم متنی توی بانک زیاد باشه و سیستم درگیر خواندن بشه و زمان زیادی ببره
    درسته حق باشماست من اومدم راحت ترین کار را انتخاب کردم
    نمونه برنامه یا سورسی در مورد مطالبی که گفتید دارین که بتونم ازش ایده بگیرم ؟

  31. #31
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    برای ftp توی اینترنت فراوان یافت میشه اما این کامله:
    indy-FTP

  32. #32
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط amir_alaki مشاهده تاپیک
    با سلام



    حق با شماست، متشکر اشاره کردین

    در مورد ذخیره شدن 1 بایت شما MStream.Size رو قبل از سیو نگاه کنین ببینین چقدره؟
    چون کد خیلی کاری با مقادیر قایل نمی کنه فقط برای فهمیدن نوع فایل از هدر 4 بایت رو می خونه و بعد سیو میکنه

    با تشکر
    همون یک بایت را نشون میده .

  33. #33
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    باسلام

    فکر کنم بشه این مشکل رو حل کرد به اینصورت که فایل اگه کوچیکه که خیلی مشکل نداره دباره از سرور دانلودش کنین، اگه بزرگه بشکنینش و هر تیکه رو ارسال کنبن و در هر ارسال برای بررسی درستی فایل ارسالی روش های Error detection مانند ParityBit یا checkSum رو برای اون تیکه استفاده کنین و فایل رو سرهم کنین.

    برای ارسال و دریافت اطلاعات معمولا چون کانال های ارتباطی (شبکه) ممکنه نویز دار باشن(مثل همین موردی که دوستمون گفتن فروریزش اطلاعات) از روش هایی که در نظریه اطلاعات هست و مربوط به انتقال اطلاعات در انواع کانال ها با نویر های متفاوت (محدود) وجود داره استفاده می کنن، فرض کنید اطلاعات یک فرستنده در یک ماهواره رو می خواید دریافت کنین اون موقع اگه اشتباه مخابره بشه و یا همراه با نویز باشه که فاتحه کار خوندس، ولی با روش هایی میشه تاحدودی برای این مشکل چاری ایی اندیشید.

    در مورد Ftp به سوال برام پیش اومد امنیت سرور رو پایین نمیاره؟و فکر کنم در فایل هایی با حجم بالا هم دچاره مشکل بشه

    البته این نطر منه

    تشکر

  34. #34
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط hamid-nic مشاهده تاپیک
    همون یک بایت را نشون میده .
    فیلد بانک اطلاعاتی از چه نوعی هست؟
    با تابع

    DATALENGTH([_File])

    در SQl اندازه رو چک کن ببین چقدر ذخیره شده.

  35. #35
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط amir_alaki مشاهده تاپیک
    فیلد بانک اطلاعاتی از چه نوعی هست؟
    با تابع

    DATALENGTH([_File])

    در SQl اندازه رو چک کن ببین چقدر ذخیره شده.
    بله چک کردم متاسفانه همون 1 بایته
    این نشون میده درست insert نشده . اما روش من کجاش مشکل داره ؟؟؟

  36. #36
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    با سلام
    كد ثبت كه نوشتين چيه؟

  37. #37
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط amir_alaki مشاهده تاپیک
    با سلام
    كد ثبت كه نوشتين چيه؟
    بله مشکل از sp که عملیات insert را انجام می داد بود که این sp را اینجا میزارم برای همه ی کسانی که یه روزی به این مشکل برمی خورند و به این تاپیک می رسند البته این sp از نوع update می باشد به هر شکلی که دوست داشته باشید تغییرش دهید :
    این sp بدون هیچ مشکلی کار میکنه و فیلد varbinary را در دیتابیس ذخیره می کنه .

    ALTER PROCEDURE [dbo].[sp_LastExe_Update]
    @CodeExe tinyint,
    @NameFile nvarchar(254) = NULL,
    @VersionFile int = NULL
    AS
    BEGIN
    SET NOCOUNT ON;

    DECLARE @SQL varbinary(max)
    DECLARE @str nvarchar(400)

    SET @str = N'SELECT @SQL = CAST( bulkcolumn AS VARBINARY(max) ) FROM '
    SET @str =@str+ N' OPENROWSET( BULK '''
    SET @str =@str+ @NameFile
    SET @str =@str+ N''', SINGLE_BLOB ) AS x'



    EXEC sp_executeSQL @str, N'@SQL varbinary(max) OUT', @SQL OUTPUT;


    Update LastExe
    Set
    [namefile]=@NameFile,
    [sizefile]=DATALENGTH(@SQL),
    [VersionFile]=@VersionFile,
    [datecreate]=getdate(),
    [ExeFile]=@SQL
    where
    CodeExe=@CodeExe

    END

  38. #38
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    بسيار عالي،اينكه به اين صورت فايل رو در جدول ذخيره ميكنين احتمال حمله به سرورتون رو زياد ميكنه،هر كسي كه بخواهد شيطوني بكنه ميشه و با اين sp ميتونه.
    فكر كنم اگه داخل برنامه تبديل بشه و فقط محتويات فايل به sp ارسال بشه بهتره تا آدرس فايل،اينجوري خودت ميتوني براي محكم كاري يه تغيرم در اطلاعات فايل بدي مثلا كدش كني و يا هر كار ديگه و موقع بازيابي فايل عكس اين عمليات رو انجام بدي، يعني طوري كه اين فايل هاي ذخيره شده در بانك فقط با برنامه خودت از سرور گرفته بشن، براي كلاينت هايي كه مجاز هستند.
    البته اين فقط نظر منه
    موفق باشي

  39. #39
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: بروز رسانی خودکار برنامه از سرور (دریافت آخرین ورژن برنامه از سرور توسط کلاینت ها)

    نقل قول نوشته شده توسط amir_alaki مشاهده تاپیک
    بسيار عالي،اينكه به اين صورت فايل رو در جدول ذخيره ميكنين احتمال حمله به سرورتون رو زياد ميكنه،هر كسي كه بخواهد شيطوني بكنه ميشه و با اين sp ميتونه.
    فكر كنم اگه داخل برنامه تبديل بشه و فقط محتويات فايل به sp ارسال بشه بهتره تا آدرس فايل،اينجوري خودت ميتوني براي محكم كاري يه تغيرم در اطلاعات فايل بدي مثلا كدش كني و يا هر كار ديگه و موقع بازيابي فايل عكس اين عمليات رو انجام بدي، يعني طوري كه اين فايل هاي ذخيره شده در بانك فقط با برنامه خودت از سرور گرفته بشن، براي كلاينت هايي كه مجاز هستند.
    البته اين فقط نظر منه
    موفق باشي
    بله ممنون از راهنمایی هاتون . البته دیتابیسی که برنامه را نگه میداره از دیتابیس اصلی جداست . هیچ کسی هم تحت هیچ شرایطی به سرور دسترسی نداره و صد البته شرایط خاص دیگه ای هم هست که دیگه اینجا نیاوردم اون کد بالا بصورت خام نوشته شده و اصل کار را بیان کردم برای کسی که مثل من به مشکل بربخوره و کارش راه بیفته .
    برای این کار بهتر از این روش هم هست ولی من با توجه به شرایط پروژه این روش را انتخاب کردم.

تاپیک های مشابه

  1. آخرین ورژن برنامه ویژوال استودیو
    نوشته شده توسط ssjssj در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 6
    آخرین پست: سه شنبه 17 شهریور 1394, 12:13 عصر
  2. پاسخ: 1
    آخرین پست: شنبه 23 اسفند 1393, 00:54 صبح
  3. بروز رسانی خودکار قیمت خودرو
    نوشته شده توسط sairon123 در بخش PHP
    پاسخ: 6
    آخرین پست: دوشنبه 29 دی 1393, 23:32 عصر
  4. بروز رسانی خودکار
    نوشته شده توسط akhani3 در بخش Access
    پاسخ: 1
    آخرین پست: سه شنبه 12 شهریور 1392, 20:16 عصر
  5. سوال: بروز رسانی خودکار updatepanel
    نوشته شده توسط amin_blog در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 13 دی 1391, 20:02 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •