PDA

View Full Version : سوال: عدم جایگزینی exe در صورت باز بودن هنگام آپدیت



Apache66
سه شنبه 25 اسفند 1394, 11:07 صبح
با سلام
دوستان عزیز من نرم افزاری نوشتم که قابلیت آپدیت هم گذاشتم داخلش .
همه چی بخوبی کار میکنه و نسخه جدید میذارم به خوبی آپدیت میشه
اما مشکل زمانی پیش می آید که نرم افزار توسط دو کاربر باز شود(نرم افزار share شده و شورتکات توسط کاربران استفاده می شود) یا یک کاربر دوبار نرم افزار را اجرا کرده باشد
دیگه عملیات جایگزینی به دلیل اینکه sessions باز می باشد ، انجام نمی گیرد
چه راه حلی پیشنهاد میکنید؟

rezashaban
سه شنبه 25 اسفند 1394, 14:31 عصر
سلام دوست من
شما میتونی با استفاده از Process ها برنامه خودت رو ببندی تا هرچی پروسس روی سیستم باز هست بسته بشه و بتونی برنامه رو آپدیت کنی

Apache66
چهارشنبه 26 اسفند 1394, 12:47 عصر
ممنون از پاسختون
ولی مشکل وقتی به صورت share هست رو چگونه حل کنم؟

حسین.کاظمی
پنج شنبه 27 اسفند 1394, 15:26 عصر
سلام
منم توی یکی از پروژه هام همچین مشکلی را داشتم....
اولا اومدم کاری کردم که هرکابری بتونه فقط یکبار برنامه را باز کند یعنی بار دوم خطا مییده باز نمیشه.....
بعد چون برنامم بروی share folder بود و کاربران زیادی وارد میشدند اومدم واسه ی ادمین یا کاربری که دسترسی و حق اجازه ی آپدیت را داشت یک فرم طراحی کردم که این فرم متصل به یک جدول بود و این جدولم جریانش این بود که هرکاربری که با استفاده از یوزر و رمز عبور داده شده بهش وارد نرم افزار میشد مشخصاتش توی این جدول ثبت میشد و اگر رکوردی از این جدول حذف میشد کاربر اتومات از برنامه خارج میشد یعنی توی برنامه کد نویسی کردم که هر 10ثانیه یکبار چک کند که رکوردی حذف شده یا خیر.... اگر حذف شده باشد همون کاربر برنامه اش بسته میشد:لبخند:

Apache66
جمعه 28 اسفند 1394, 07:35 صبح
خلی هم خوب
ولی من هر کاربری که برنامه رو اجرا کرد باید برنامه بروز شود و کاری به سطح دسترسی ندارم
اگه کاری کنم که برنامه فقط یکبار اجرا بشه هنگام share به مشکل نمیخورم؟ یکی باز کرده و اجازه نمیده کسی دیگه برنامه را باز کنه!

یک راه حلی باید باشه

حسین.کاظمی
جمعه 28 اسفند 1394, 10:36 صبح
معمولا سناریوی آپدیت اینجوریه اگر بخایید که هرکاربری واس خودش آپ کنه که به دردسرهای عظیمی برمیخوری......بهترین کار اینکه عملیات آپ را بزارید بعهده ینفر که دسترسی داشته باشه....
و در مورد اجرای یکبار نرم افزار بروی فولدر مشترک نه به مشکلی برنمی خوره، چون هر کاربری از شورتکات اون برنامه استفاده میکنه و بروی پروکسس سیستم خودش اجرا میشه و شما میتونید بیایید برنامه را از طریق پروکسس چک کنید اگر برنامه بازه خطا بده و برای بار دوم برنامه را باز نکنه
موفق باشید

Apache66
جمعه 28 اسفند 1394, 11:13 صبح
ممنون
ولی برنامه من طوری هست که باید همواره از آخرین ورژن استفاده بشه چه کاربرش دسترسیش بالا باشه چه نباشه

FastCode
جمعه 28 اسفند 1394, 12:08 عصر
سلام.
من واقعا حوصله ندارم توضیح بدم این چطوری کار میکنه.فقط اینکه جند برابر چیزی که میخواهی رو انجام میده و اگر کدش رو بخونی خودت میتونی طرز کارش رو یاد بگیری(هم میتونی از این استقاده کنی و هم میتونی از کدش یا ایده هاش استفاده کنی):
https://github.com/Behrooz-Amoozad/DevTools/tree/master/Behrooz.WebInstaller


نمونه دستور آپلود:

#!/bin/bash
rm bin/manifest.xml* bin/*.xml~ bin/*/*.xml~ bin/*/*/*.xml~ bin/example*.log bin/manifest.xml.sig bin/temp/*
chmod 0755 bin/Executable*.exe bin/*.exe.config
cp -a example/*.dll bin/
cd bin
rm manifest.xml
mono Behrooz.WebInstaller.exe configure \
--package name=linux-common install-path= platform=Linux remote-path=platforms/linux-common/ \
--package name=win-common install-path= platform=Windows remote-path=platforms/win-common/ \
--package name=bin install-path= platform=Common remote-path= executable=Executable.exe \
--auto-discovery --uri "http://sub.example.com/update/" \
--certificate "../sub.example.com.crt" --version 1 --output manifest.xml
gpg --output manifest.xml.sig --detach-sig manifest.xml
rsync -e 'ssh -2Cp 1433' -v --delete --checksum -Pa --checksum --inplace ./ root@sub.example.com:/var/www-sub.example.com/update

Apache66
جمعه 28 اسفند 1394, 14:03 عصر
ممنون
ولی من اصلا متوجه نشدم!

FastCode
جمعه 28 اسفند 1394, 23:06 عصر
ممنون
ولی من اصلا متوجه نشدم!

ایول
کدوم قسمتش رو متوجه نشدی؟

در مورد SSDP یک مقدار تحقیق کن. switch های برنامه رو نگاه کن. کد رو مطالعه کن. بعدش سوالاتت رو دقیق بپرس.

Apache66
شنبه 29 اسفند 1394, 07:09 صبح
ایول
کدوم قسمتش رو متوجه نشدی؟

در مورد SSDP یک مقدار تحقیق کن. switch های برنامه رو نگاه کن. کد رو مطالعه کن. بعدش سوالاتت رو دقیق بپرس.

:افسرده:


دوستان اگه راه کاری یا نمونه سورسی دارید ممنون میشم با نمونه راهنمائی کنید
ممنون

Apache66
سه شنبه 03 فروردین 1395, 16:31 عصر
از اساتید سایت خواهشا کمک کنید

FastCode
چهارشنبه 04 فروردین 1395, 03:29 صبح
این روش هم هست.ولی خیلی کار تمیز و قشنگی نیست.
http://stackoverflow.com/questions/12513655/what-is-the-right-way-to-set-shadow-copying-for-the-default-appdomain