PDA

View Full Version : تابع shell برای اجرای فایلی با پسوند msi



Sahand87
دوشنبه 15 فروردین 1390, 00:01 صبح
سلام

از تابع SHELL برای فایلهای exe راحت استفاده می کردم نمیدونم چرا برای اجرای فایلهایی که با پسوند msi هستند پیغام خطا میده لطفا راهنمایی کنید .
البته جستجو کردم ازموارد اشاره شده برای اجرای فایل های پسوند msi موفق نشدم

quiet_programmer
دوشنبه 15 فروردین 1390, 13:23 عصر
با سلام

میتونی فایل رو بدی به cmd تا اجراش کنه.

Shell "cmd /c f:\1b3bb5.msi", vbHide

اگه بجای سوئیچ c از k استفاده کنی cmd باز میمونه ولی با c بعد اجرای فایل cmd بسته میشه.

در ضمن اگه تو قسمت آدرس space استفاده شده از دستور به شکل زیر استفاده کن

Shell "cmd /c " + """" + "f:\New Folder\1b3bb5.msi" + """", vbHide

Sahand87
دوشنبه 15 فروردین 1390, 15:14 عصر
سلام

خیلی ممنون quiet_programmer که پاسخ من را دادی حالا سوال دیگه اینه که اگر بخواهیم از مسیر جاری با (دستور App.Path) استفاده بکنیم چه باید کرد من دستور را به این شکل تایپ کردم Shell "cmd /c App.Path & "\123.msi", vbHide جواب نداد.

kuh_nur
دوشنبه 15 فروردین 1390, 15:43 عصر
شما اصل دستور رو درست نوشتی ولی تو تایپ اشکال داری
با این دستور امتحان کن
Shell "cmd /c" & App.Path & "\123.msi", vbHide
فقط چون این کاراکترا رو نذاشته بودی درست کار نمی کرد

Sahand87
دوشنبه 15 فروردین 1390, 17:16 عصر
سلام
ممنون از پاسختون مشکل حل شد فقط نمی دونم چرا وقتی فولدر برنامه در دسکتاپ هست دستور Shell اجرا نمیشه ولی اگر در ریشه یا فولدر دیگر درایوها باشه اجرا میشه البته فولدر برنامه ام هم در ریشه قرار میگیره فقط برام سوال بود چرا درمسیر دسکتاپ دستور اجرا نمیشه .

kuh_nur
دوشنبه 15 فروردین 1390, 18:04 عصر
دوست عزیز شاخه دسکتاپ با آدرس
X:\Documents and Settings\All Users\Desktop
(X نام درایوی است که ویندوز در ان نصب شده است) . یکی از معدود Environment Variables های ویندوز است و اگه اشتباه نکنم فایل های آرشیویی MSI بصورت تو این مسیر ها اجرا نمیشه

quiet_programmer
دوشنبه 15 فروردین 1390, 19:56 عصر
با سلام.


ممنون از پاسختون مشکل حل شد فقط نمی دونم چرا وقتی فولدر برنامه در دسکتاپ هست دستور Shell اجرا نمیشهببینید گفتم اگه مابین آدرس فاصله داشته باشین باید اونو داخل "" محصور کنین. با این دستور دارین cmd رو با یه پارامتر run میکنین که اگه پارامتر داری فاصله خالی باشه باید ببیرین تو "". مثلا cmd.exe /c "c:\New Folder\123.exe"l همونطور که مشاهده میکنین new Folder دارای فاصله است. پس پارامتر باید بره داخل "".

پس:
Shell "cmd /c" & """" & App.Path & "\123.msi" & """", vbHide

با این دستور میتوننین فایل رو در هر مسیری که هست اجرا کنین.