استاد علی ، وقتی بخوام ستاپ بسازم ، dll هایی مثل Microsoft.OneGet.Utility.dll یا Microsoft.Win32.TaskScheduler.dll را باید توی رجیستری ثبت کنم؟
یعنی اینا الان کمپوننت هستن که باید ثبت بشن یا نه؟
کلا از کجا باید تشخیص بدم کدوم dll باید ثبت شه؟
برای ثبت یه کمپوننت در رجیستری هم در نرم افزار Advanced Installer ، باید در تصویر زیر ، دومین گزینه را انتخاب کنم دیگه (register assembly) ؟ درسته؟ :
مشاهده پیوست 112100
بعد اینکه گزینه ی سوم برای چیه؟
کلا رجیستر شدن مختص کتابخانه های COM ئه، همون ActiveX ها که Interop دارند، DLL های Native که ActiveX نیستند یا DLL هایی که NET. میسازه مثل COM نیستند که GUID و مشخصاتشون ثبت بشه، چیزی برای رجیستر شدن در بخش COM ندارند. مشخصات اسمبلی های NET. میتونه در GAC ثبت بشه ولی جهت استفاده اشتراکی و مدیریت نسخه، نه الزاما برای اینکه بتونه اجرا بشه.
وقتی یک کتابخانه NET. رو برای استفاده اختصاصی پروژه خودتون بکار بردید که در فولدر برنامه خودتونه دلیلی برای قرار گرفتن در GAC نداره، چون اولا همراه برنامه تون Uninstall شدنی ئه و ثانیا چون استفاده اشتراکی نداره، اما یک اسمبلی که تعداد زیادی برنامه مشترکا بکار می برند، دیگه در فولدر برنامه شما نباید باشه، در مسیر مشترک اسمبلی ها در سیستم قرار میگیره و ثبت میشه تا هر ارتقاء ای که براش انجام بشه برای همه برنامه ها مشترکا باشه.
بعد اینکه میشه نرم افزارهای دات نت رو جوری ستاپ اش را ساخت که مثل خروجی اتوپلی ، نیازی به ستاپ نداشته باشن و مثل پروژه ی عادی ، با یه کلیک اجرا بشه؟
هیچ تضمینی نیست که خروجی اتوپلی با یک کلیک اجرا بشه و بخاطر رجیستر نبودن یک موردی کرش نکنه. برنامه تحت NET. ای هم ممکنه داخلش انواع کتابخانه ها بکار برده باشه که نیاز به نصب شدن داشته باشند یا نداشته باشند. قبلا هم در این مورد صبحت کردید و پاسخ مفصل دادم. بهتره بجای گفتگوی دوباره مطالب قبلی رو مرور کنید.
بعد اینکه خروجی پروپرتی Application.ExecutablePath ، بصورت زیر هست :
کد:
E:\Project\Visual Studio\C#.Net/Saved Project/Windows Update Disabler/Windows Update Disabler/bin/Debug/Windows Update Disabler.exe
به عملگر اسلش و بک اسلش دقت کنید . قبل از پوشه ی
C#.Net عملگر \ و بعدش عملگر / داره . ولی اشکالی ایجاد نمیشه و درست کار میکنه . اما چرا این اتفاق افتاد؟ اولین باره میبینم
تا آنجایی که به سیستم عامل ویندوز مربوطه هم \ و هم / به عنوان جداکننده مسیر معتبره. اما اینکه چرا URI رو به عنوان مسیر فایل اینطوری ایجاد کرده اطلاعی ندارم.