PDA

View Full Version : سوال: اجرای exe بدون قفل شدن فایل توسط ویندوز



manitack
چهارشنبه 02 مرداد 1392, 12:24 عصر
سلام وقت بخیر
برای بروز رسانی یه برنامه احتیاج دارم طوری اجراش کنم که فایلهاش lock نشن و بشه هنگام اجرا فایلهاش رو رونوشت کرد. دستوراتی رو تست کردم مثل


Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = false;// or true
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.FileName = "test.exe";
myProcess.Start();

اما فایلهای برنامه test باز هم زمان اجرا امکان رونوشت شدن ندارند.
دوستان اگر راه حلی دارن و بگن ممنون میشم

programerinfonet
چهارشنبه 02 مرداد 1392, 12:38 عصر
دوست عزیز اگه متوجه شده باشم میخوایی بعد از اجرای برنامه آپدیتش کنی . درسته ؟ فکر کنم باید کدای برنامتو تو یک فایلی ی جایی ذخیره کنی و برنامت از اون بخش فراخوانی بشه
در غیر این صورت بعید می دونم راه دیگری داشته باشی

manitack
چهارشنبه 02 مرداد 1392, 15:12 عصر
دوست عزیز اگه متوجه شده باشم میخوایی بعد از اجرای برنامه آپدیتش کنی . درسته ؟ فکر کنم باید کدای برنامتو تو یک فایلی ی جایی ذخیره کنی و برنامت از اون بخش فراخوانی بشه
در غیر این صورت بعید می دونم راه دیگری داشته باشی

ممنون از توجه...
در واقع برنامه ایی روی سرور هست که شورتکات اون روی کامپیوترهای شبکه قرار داده شده. برنامه باید بروز بشه. اما اجرای شورتکاتها باعث قفل شدن فایلهای برنامه میشه و امکان رونوشت کردن فایلها وجود نداره. امکان بستن تمام برنامه ها روی کلاینتها هنگام بروز رسانی هم نیست. درواقع دنبال کدی هستم که یک exe رو طوری اجرا کنه که توسط ویندوز exe و فایلهاش lock نشن

manitack
شنبه 05 مرداد 1392, 12:03 عصر
unlock کردن فایلها میتونه یه راه حل باشه مثل برنامه های Unlocker اما ممکنه اجرای برنامه اصلی رو با مشکل مواجه کنه. دوستان تجربه ایی نداشتن ؟

manitack
دوشنبه 04 شهریور 1392, 10:36 صبح
یه راه حل موقتی پیدا کردم که جواب میده عنوان میکنم تا اگر کسی به این مشکل برخورد مثل من بی پاسخ نمونه. فایلهای لاک شده توسط exe قابل rename شدن هستند. فایلهای قدیمی رو rename میکنم و فایلهای جدید رو به مجاور exe منتقل میکنم. بنابراین نیازی به رونوشت کردن فایلها نیست. فایلهای قدیمی رو هم هر بار try میکنم برای حذف که شلوغ نشه.

aliagamon
دوشنبه 04 شهریور 1392, 10:46 صبح
والا شاید من منضورتو نفهمیده باشم ... الان مشکله شما اینه که وقتی میخوای اپدیت کنی گیر میده میگه برنامه بازه نمیتونه replace کنه یا روش بنویسه؟....
معمولا واسه این کار اپدیتر رو تو یه فایل جدا build میکنن مثلا update.exe که برنامه موفعی که میخواب بروزرسانی کنه اونو باز کنه و با باز شدن اون اتوماتیک تسک برنامه کیل میشه و میتونه روش بنویسه ....اگرم بخوای میتونی دانلود رو هم با برنامه اصلی انجام بدی بعد با یه برنامه جدا که نوشتی تسک رو کیل کنی و اطلاعات رو بنویسی...بعد دوباره برنامه رو ران کنی...
اگرم اطلاعاتی هست که نباید از دست بره موقع اپدیت میتونی تو یه xml بنویسی (یا حتی تو تکست)....بعد اولین بار که باز میشه بعد اپدیت اونا رو بخوانه و بعد پاک کنه اینطوری چیزی هم از دست نمیره
اگرم منضورتون اون بالایی نیست توضیح بدین..

barnamenevisjavan
دوشنبه 04 شهریور 1392, 11:43 صبح
برای اینکه لوک نشه بیا بخش آپدیت کننده برنامه رو بصورت برنامه مستقل بنویس.

manitack
دوشنبه 04 شهریور 1392, 12:45 عصر
والا شاید من منضورتو نفهمیده باشم ... الان مشکله شما اینه که وقتی میخوای اپدیت کنی گیر میده میگه برنامه بازه نمیتونه replace کنه یا روش بنویسه؟....
معمولا واسه این کار اپدیتر رو تو یه فایل جدا build میکنن مثلا update.exe که برنامه موفعی که میخواب بروزرسانی کنه اونو باز کنه و با باز شدن اون اتوماتیک تسک برنامه کیل میشه و میتونه روش بنویسه ....اگرم بخوای میتونی دانلود رو هم با برنامه اصلی انجام بدی بعد با یه برنامه جدا که نوشتی تسک رو کیل کنی و اطلاعات رو بنویسی...بعد دوباره برنامه رو ران کنی...
اگرم اطلاعاتی هست که نباید از دست بره موقع اپدیت میتونی تو یه xml بنویسی (یا حتی تو تکست)....بعد اولین بار که باز میشه بعد اپدیت اونا رو بخوانه و بعد پاک کنه اینطوری چیزی هم از دست نمیره
اگرم منضورتون اون بالایی نیست توضیح بدین..

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