PDA

View Full Version : استفاده از کامپوننت در سیستم کاربر بدون نیاز به رجیستر کردن



m2011kh
جمعه 13 بهمن 1391, 16:11 عصر
سلام دوستان.

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

این فایلی که ضمیمه کردم رو اسمش باید اسم قسمت اول اسم فایل برنامه شما با پسوند ".exe" باشه.

فایل رو با NotePad باز کنید و قسمت که نوشته YourComponent.ocx رو به اسم کامپوننت خودتون تغییر بدین.فایل اجرایی و کامپوننت و این فایل رو در کنار هم قرار بدین.

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

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

حمید محمودی
جمعه 13 بهمن 1391, 19:31 عصر
سلام،

ریجستر میشه؛ اما نه به اون صورتی که قبلا بود؛ بطور کلی assembly manifest ها فایل های XMLی هستند که، تکنولوژی SxS assembly رو تعریف میکنند؛ SxS یا Side-by-side یک استاندارد برای فایل های اجرایی هست که از +Windows 98 SE برای کم شدن وقوع DLL Hell مورد استفاده قرار گرفت؛ و در حقیقت نام و نسخهء یک SxS Assembly و منابع اون و وابستگی هایی که با SxS Assembly های دیگه داره رو مشخص میکنه؛ که بصورت فایل و هم نام با فایل اجرای، و یا بصورت ریسورسی که به فایل اجرایی Bind شده برای برای نصب، و فعالسازی و اجرای SxS A همراه با برنامه وجود داره؛ درواقع با assembly manifest میشه ارتباط بین عناصری که در داخل اون وجود داره رو با بقیه عناصر تعریف کنیم؛

عناصر و مشخصه هایی که در assembly manifest داریم، مهمترینش در این Manifest File Schema ای که ارائه شد شاید tlbid و clsid باشه که به ترتیب GUIDی type libraryی COM component فعلی ای که قصد ریجستر کردن اون رو دارید، و GUIDی منحصر به فرد کلاس فعلی ماست، باشه؛

کلا Manifest برای تنظیماتی مثل معماری پردازنده ای که برنامه ما میتونه روش اجرا بشه، همچنین، تنظیمات اجرای برنامه با دسترسی ادمین، کمک به Theme Manager برای رسم کنترل ها و .... استفاده میشه.

پ.ن:
میزان اعتماد به این روش میتونه حداقل به دلیل احتمال وجود GUIDی مشابه در سیستم کاربر، کم باشه؛ البته دوستان امتحان کنند، در تست عملی شاید خوب جواب بده.

m2011kh
جمعه 13 بهمن 1391, 23:26 عصر
سلام.

ممنون از مطالبتون.

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

فکر نکنم چنین شرکت هایی از روش های غیر قابل اعتماد استفاده کنن.

فقط میشه در باره تنظیمات اجرای برنامه با دسترسی ادمین با استفاده از assembly manifest بیشتر توضیح بدین.

از نظراتتون خوشحال شدم و میشم.

MMD

Dr.Bronx
جمعه 13 بهمن 1391, 23:37 عصر
چه اصراری هست که رجیستر نشه ؟

اگر از ستاپ ساز هم استفاده نکنیم خرجش ۱ بار اجرا کردن یک فایل bat هست دیگه . از این که بالاتر نیست .

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

موفق باشید ./

mehran901
جمعه 13 بهمن 1391, 23:40 عصر
از دوستان کسی میدونه مجاز به اضافه کردن خط <file name="YourComponent.ocx"> به تعداد دلخواه هستیم یا نه ؟و آیا سینتکس ثابت میمونه ؟



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="YourComponent.ocx">
<typelib
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}"
version="1.0"
helpdir=""/>
<comClass description=""
clsid="{0CA5A93D-F6BD-4398-809A-9F767276EF77}"
progid="TINY.TinyCtrl.1"
threadingModel="Apartment"
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}" />

</file>
</assembly>

Hashemvp
شنبه 14 بهمن 1391, 04:06 صبح
سلام
دوست عزیز m2011kh (http://barnamenevis.org/member.php?187796-m2011kh) من با نظر htaccess (http://barnamenevis.org/member.php?85593-htaccess) موافق هستم چون من بارها شده از این روش برای زیبایی برنامه ام ک از تم ویندوز استفاده کنه ، استفاده کردم
و شاهد این بودم ک توی بعضی از رایانه ها اجرا نمیشه و پیغام خطا میده

اول فکر میکردم ک من دستورات رو اشتباه مینویسم
توی خیلی از سایت ها جستجو کردم روش های ایجاد این فایل رو بدست اوردم و طبق اونا درست کردم ولی باز هم همون مشکل بود و برنامه اجرا نمیشد و فقط صدای پیغام خطا می امد حتی پیغام خطا هم نشون نمیداد

زیاد قابل اعتماد نیست
موفق باشید

m2011kh
شنبه 14 بهمن 1391, 12:31 عصر
سلام.
شاید منظورمو برای گزاشتن این فایل و مطلب درست نگرفته باشید.

کلا من هدفم این بود که ببینم این روش قابل استفاده هست یا نه.اگه هست تا چه حد میشه بهش اعتماد کرد.

در مورد حرف Hashemvp (http://barnamenevis.org/member.php?96022-Hashemvp) باید بگم که تا جایی که من میدونم اگه کنترل Microsoft Windows Common Controll 6.0 و یا 5.0 رو استفاده کنید دیگه با این خطا مواجه نمیشید.

در مورد حرف Dr.Bronx (http://barnamenevis.org/member.php?48204-Dr.Bronx):
حرف شما کاملا درسته میشه با اجرای یه فایل .bat کامپوننت ها رو رجیستر کرد.

ولی به هر حال اگه این روش قابل اعتماد باشه اینم یه روش هست دیگه.

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

بازم دوستانی که این تاپیکو میبینن ازشون میخوام فایل رو امتحان کنن.

آقای mehran901 (http://barnamenevis.org/member.php?269113-mehran901):
اگه هم نشه که این متد رو دوبار نوشت فک کنم بشه کل کد رو دوبار نوشت مثلا اینطوری:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="ONE.ocx">
<typelib
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}"
version="1.0"
helpdir=""/>
<comClass description=""
clsid="{0CA5A93D-F6BD-4398-809A-9F767276EF77}"
progid="TINY.TinyCtrl.1"
threadingModel="Apartment"
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}" />

</file>
</assembly>


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="TWO.ocx">
<typelib
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}"
version="1.0"
helpdir=""/>
<comClass description=""
clsid="{0CA5A93D-F6BD-4398-809A-9F767276EF77}"
progid="TINY.TinyCtrl.1"
threadingModel="Apartment"
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}" />

</file>
</assembly>





دوستان نظراتون رو حتما بگین و ما رو از اونها بی بهره نزارید.

mehran901
شنبه 14 بهمن 1391, 12:42 عصر
سلام
دوست عزیز m2011kh (http://barnamenevis.org/member.php?187796-m2011kh) من با نظر htaccess (http://barnamenevis.org/member.php?85593-htaccess) موافق هستم چون من بارها شده از این روش برای زیبایی برنامه ام ک از تم ویندوز استفاده کنه ، استفاده کردم
و شاهد این بودم ک توی بعضی از رایانه ها اجرا نمیشه و پیغام خطا میده

اول فکر میکردم ک من دستورات رو اشتباه مینویسم
توی خیلی از سایت ها جستجو کردم روش های ایجاد این فایل رو بدست اوردم و طبق اونا درست کردم ولی باز هم همون مشکل بود و برنامه اجرا نمیشد و فقط صدای پیغام خطا می امد حتی پیغام خطا هم نشون نمیداد

زیاد قابل اعتماد نیست
موفق باشید

از روش sub main هم استفاده کردین ؟ با اون روش من تاحالا به مشکل برنخوردم....

mehran901
شنبه 14 بهمن 1391, 12:47 عصر
سلام.
شاید منظورمو برای گزاشتن این فایل و مطلب درست نگرفته باشید.

کلا من هدفم این بود که ببینم این روش قابل استفاده هست یا نه.اگه هست تا چه حد میشه بهش اعتماد کرد.

در مورد حرف Hashemvp (http://barnamenevis.org/member.php?96022-Hashemvp) باید بگم که تا جایی که من میدونم اگه کنترل Microsoft Windows Common Controll 6.0 و یا 5.0 رو استفاده کنید دیگه با این خطا مواجه نمیشید.

در مورد حرف Dr.Bronx (http://barnamenevis.org/member.php?48204-Dr.Bronx):
حرف شما کاملا درسته میشه با اجرای یه فایل .bat کامپوننت ها رو رجیستر کرد.

ولی به هر حال اگه این روش قابل اعتماد باشه اینم یه روش هست دیگه.

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

بازم دوستانی که این تاپیکو میبینن ازشون میخوام فایل رو امتحان کنن.

آقای mehran901 (http://barnamenevis.org/member.php?269113-mehran901):
اگه هم نشه که این متد رو دوبار نوشت فک کنم بشه کل کد رو دوبار نوشت مثلا اینطوری:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="ONE.ocx">
<typelib
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}"
version="1.0"
helpdir=""/>
<comClass description=""
clsid="{0CA5A93D-F6BD-4398-809A-9F767276EF77}"
progid="TINY.TinyCtrl.1"
threadingModel="Apartment"
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}" />

</file>
</assembly>


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="TWO.ocx">
<typelib
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}"
version="1.0"
helpdir=""/>
<comClass description=""
clsid="{0CA5A93D-F6BD-4398-809A-9F767276EF77}"
progid="TINY.TinyCtrl.1"
threadingModel="Apartment"
tlbid="{DF1D4B1E-D56E-4A40-BA98-2CC06080E796}" />

</file>
</assembly>





دوستان نظراتون رو حتما بگین و ما رو از اونها بی بهره نزارید.


آره احتمالا مشکلی نداشته باشه ولی شاید نیاز باشه کل تگ ها در پیکره اصلی assembly> نوشته بشن ، و بعد از اولین </assembly> ، کد ها در نظر گرفته نشن.... کسی اطلاعاتی داره راجب این ؟

Hashemvp
شنبه 14 بهمن 1391, 14:39 عصر
از روش sub main هم استفاده کردین ؟ با اون روش من تاحالا به مشکل برنخوردم....




در مورد حرف Hashemvp (http://barnamenevis.org/member.php?96022-Hashemvp) باید بگم که تا جایی که من میدونم اگه کنترل Microsoft Windows Common Controll 6.0 و یا 5.0 رو استفاده کنید دیگه با این خطا مواجه نمیشید.



بله من از هر دو روش استفاده کردم
و توی بعضی از ویندوز ها بخوبی جواب نمیده این تجربه ای بود ک من بدست اوردم این مشکل تنها برای ویبی 6 نیست
من بعضی از برنامه ها ک با زبان سی++ هم نوشته بودن و یک فایل manifest در کنارشون بود ک ظاهر برنامه شکیل بشه
رو دیدم ک همون مشکل داشتن

موفق باشید

حمید محمودی
شنبه 14 بهمن 1391, 19:07 عصر
سلام :لبخندساده:


ولی فک نکنم که درصد اعتماد به این روش کم باشه.چون یه شرکت ارائه کننده ی قفل سخت افزاری ای فایل رو ارائه دادن تا کامپوننت هاشون که به مشتری میدن بدون رجیستر شدن استفاده بشن.فکر نکنم چنین شرکت هایی از روش های غیر قابل اعتماد استفاده کنن.عرض کردم که، ریجستر میشن؛ اما نه به اون صورتی که قبلا بود؛ ولی عرضم این بود که به دلیل احتمال وجود GUIDی مشابه در سیستم کاربر شاید به مشکل بر بخوریم؛ نمیدونم شاید در عمل، اون GUID ما Overwrite بشه؛ و مشکلی پیش نیاد


فقط میشه در باره تنظیمات جارای برنامه با دسترسی ادمین با استفاده از assembly manifest بیشتر توضیح بدین. توسط تگ requestedPrivileges ؛ این پست (http://barnamenevis.org/showthread.php?216850&p=962002&viewfull=1#post962002) رو مطالعه کنید؛


اگر از ستاپ ساز هم استفاده نکنیم خرجش ۱ بار اجرا کردن یک فایل bat هست دیگه . از این که بالاتر نیست .
شاید حدف از این کار یه چیز دیگه است که من متوجه نمی شم . اگر اینطوره که توضیح بدید به معلومات بنده هم اضافه بشه .اگر احتمال Register کردن کامپیوننت فعلی رو با یک GUID خاصی که مد نظر ماست توسط Setup Builder ها در نظر نگیریم، میتونیم بگیم که میشه با کنترل GUIDی کامپیوننتی که با روشی که در تاپیک فعلی بهش اشاره شده قصد ریجستر کردنش رو داریم؛ در موارد خاص ازش بتونیم استفاده کنیم؛ شاید در مواقعی نیاز باشه دسترسی به اون GUIDی که خودمون بهش دادیم، داشته باشیم....



اگه هم نشه که این متد رو دوبار نوشت فک کنم بشه کل کد رو دوبار نوشت
باید تگ File رو به همراه بقیه Element هاش برای یکایک کامپیوننت هامون به کار ببریم؛ نه اینکه دوباره تگ Assembly رو از سر بنویسیم؛



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

m2011kh
شنبه 14 بهمن 1391, 19:42 عصر
سلام به همه دوستان و اساتید محترم.

درسته لازم نیست که کل تگ Assembly رو دوباره نوشت.

ودر کل اگه بشه بهش اعتماد کرد و به قول آقای htaccess اون GUID اوررایت بشه در شرایط خاصی ممکنه کمکمون کنه.

Thanks
MMD