آموزش نصب افزونهی ویراستیار روی ورد ۲۰۱۶ و بالاتر – ویرگول
– فایل وصله برای ویراستیار نسخه 4 بتا: لینک اصلی، لینک کمکی، لینک VirusTotal
– فایل نصب ویراستیار نسخه 4 بتا: لینک کمکی، لینک اصلی
– فایل وصله برای ویراستیار نسخه 3.5: لینک اصلی، لینک کمکی، لینک VirusTotal
– فایل نصب ویراستیار نسخه 3.5: لینک کمکی، لینک اصلی
نکته: ظاهرا در برخی موارد افزونهی ویراستیار بر روی آفیس 64بیتی اجرا نمیشود، ولی ظاهرا مشکلش با 32 بیتی ها کمتر هستپس اگر روی آفیس 64 بیتی کار نکرد میتوانید با مدل 32 بیتی امتحان کنید.
مراحل نصب ویراستیار 4 بتا در یک نگاه
ابتدا فایل وصله را از این لینک دانلود کنید (هردو لینک یک فایل هستند) : لینک اصلی، لینک کمکی،
این فایل حدود 3 الی 4 مگابایت حجم داره و یک فایل فشرده هست و سپس مراحل زیر رو دنبال کنید:
1- اگر برنامه ویراستیار روی دستگاه نصب است، ابتدا برنامهی ویراستیار را از طریق کنترل پنل Uninstall کنید.
2- فایل patch.reg که داخل فایل وصله است را اجرا کنید

3- فایل نصب نسخهی 4 بتا ویراستیار را از لینک زیر از سایت سورسفورج دانلود نموده و نصب نمایید
وقتی وارد لینک میشوید باید چند لحظه تامل کنید تا دانلود خود به خود شروع شود
اگر لینک کار نکرد از لینک کمکی زیر استفاده کنید
لینک
دقت کنید حتما نسخهی 4 بتا رو از لینک بگیرید
4- فایلهای زیر رو که در فایل فشرده ی وصله هست، به ادرس محل نصب ویراستیار کپی کرده و جایگزین فایلهای قبلی نمایید (شاید بخواهید از فایلهای قبلی یک کپی بگیرید):
VirastyarWordAddin.dll
VirastyarWordAddin.dll.manifest
VirastyarWordAddin.vsto
به این آدرس کپی کنید:
C:\Program Files (x86)\Virastyar\Add-in
آدرس بالا برای ویندوز های 64 بیتی هست، اگر ویندوزتون 32 بیتی هست، این آدرس محل نصب خواهد بود:
C:\Program Files\Virastyar\Add-in

5- برنامهی Word 2016 را باز کنید، افزونه باید بدون مشکل اجرا شده باشد و در زبانه های بالایی برنامه قابلمشاهده باشد، اگر نبود به مرحلهی بعد بروید

6- اگر افزونه مانند شکل بالا اجرا نشده بود، از طریق منوی Optionبروید و افزونه را فعال کنید:

7- وقتی به این مرحله میرسید افزونه باید اجرا شده باشه، در اندک مواردی که نشه لطفا ادامه مطلب رو بخونید
اگر مشکلی بود چه؟
خوب توی این حالت، اول باید بفهمیم مشکل از کجاست. باید دست به آچار بشیم و در حد 10 دقیقه زمان بزاریم. Word بطور پیش فرض خطاهایی که اتفاق می افتند رو نمایش نمیده و پنهانشون میکنه، اول باید یک کاری بکنیم که پیغام خطا رو نمایش بده و پنهان نکنه، برای این کار باید
1- یک متغیر محلی بسازیم
2- افزونه رو داخل Word فعال کنیم
1- ساخت متغیر محلی
خوب اول باید یک متغیر محلی ویندوز (Environment Variable) بسازیم با نام VSTO_SUPPRESSDISPLAYALERTS و مقدار 0 تا آفیس خطایی که ایجاد میشه رو به ما نشون بده و پنهانش نکنه. ساخت متغیر محلی توی هر نسخه از ویندوز متفاوته، من از طریق استارت منو اینطوری انجام دادم:

2- فعال کردن افزونه در Word

بعد از فعال کردن افزونه دو حالت ممکنه پیش بیاد، یا افزونه بدون مشکل فعال میشه و در زبانه های بالای ورد نمایش داده میشه که کار تمام هست و مشکلی نیست، و یا یک پیغام خطا نشون داده میشه که این شکلی هست:

اگر پیغام خطایی نشون داده شد میتونید Details اون رو به همراه نسخهی آفیس در قسمت نظرهای همین نوشته ارسال کنید، شاید قابل حل باشه. حتما نسخهی آفیس رو هم اینطوری در بیارید و ذکر کنید:
File Menu > Account > About Word

مثلا مال من Word 2016 (16.0.5110.1000) 32-bit هست، یعنی اصطلاحا ورد 2016ی 32 بیتی دارم.
نکته: طبق گزارش بعضی دوستان این وصله (یا کلا ویراستیار) با وردهای 64 بیتی مشکل داره و روشون اجرا نمیشه. اگر وردتون 64 بیتی هست به احتمال زیاد ممکنه این وصله درست عمل نکنه، باید با ورد 32 بیتی امتحان کنید.
ویراستیار یک افزونه ی بسیار کارا برای Microsoft Word توسط یک گروه ایرانی باحال نوشته شده هست. عمده استفاده ای که من ازش میکنم و قبلا کردم این هست که غلط های املایی توی Word رو میگیره و خلاصه همونطور که از اسمش ویراستیار بر میاد یک کمک ویراستار هست برای من. منتهای مراتب این نرم افزار حدود 5 ساله که به روز رسانی نشده و آخرین نسخه اش برای Office 2013 هست و طبق توضیحات رسمیاش باید روی افیس 2010 و بالاتر اجرا بشه، ولی ورد 2013 اخرین نسخه ای هست که این افزونه روش اجرا میشه و در ادامه خواهیم دید که چرا روی ورد 2016 اجرا نمیشه. پیش خودم میگفتم چقدر حیف که برای استفاده از این افزونه مجبورم ورد 2013 رو به جای 2016 روی رایانه ام نصب کنم. امروز بعد از صرف چندین ساعت وقت و توان توانستم روی آفیس 2016 نصبش کنم و روی 2019 هم جواب میده، سعی میکنم با جزییات راهی که رفتم رو بگم. این متن دو بخش داره، کار سخت و کار راحت که جفتش به اجرای برنامه روی آفیس 2016 و 2019 ختم میشه منتها راه راحت واسه کسایی هست که حال راه سخت رو ندارن و البته به نویسنده هم اعتماد دارن چون یکی دوتا فایل رو باید بارگیری کنن >:)~ (این یک خنده ی شیطنت آمیز با ریش بزی هست و اسکلت ماهی یا گل نیست) . ولی راه سخت دیگه این مشکلات رو نداره و نیازی به دانلود فایلی که ندونید توش چیه، نیست. میشه یک بار فایلها رو اماده کنید و مثل من هر بار که ویندوز رو عوض میکنید از همون فایلها استفاده کنید، چون من معمولا تند تند ویندوز عوض میکنم.

در ضمن توضیحات رو کمی مفصل مینویسم که دوستانی هم که کمتر آشنایی دارن متوجه بشن، اگر سرتون رو درد میاره به برزگی خودتون ببخشید. اول راه سخت رو میگیم، بعد راه راحت
1- راه سختتر
خوب اول باید ویراستیار نسخه 4 بتا رو بارگیری کنیم. این آدرس الان کار میکنه:
ادرس یک فایل فشرده zip هست که توش فایل نصب و دو فایل PDF داره. یک فایل نصبی داره که بعد از اجرا اگر فقط آفیس 2016 رو داشته باشید این خطا رو خواهید دید.

دکمه OK رو که بزنیم خوشبختانه آخرش یک قسمت log داره که میتونیم ببینیمش:

خوب یک سر نخ پیدا کردیم. وقتی این فایل MSI رو میخوایم دستی اجرا کنیم همون خطا رو میده. حالا با یه ابزاری مثل LessMSI فایل رو باز میکنیم:

میبینیم که شرط اینکه برنامه نصب بشه اینه که در ادرس زیر در registry باید یک مقدار وجود داشته باشه. اطلاعات بیشتر
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\word\InstallRoot]
و اون مقدار هم نامش باید path باشه، خوب بصورت دستی درستش میکنیم:

و فایل رو دوباره اجرا میکنیم. نصاب برنامه گول خورد و حالا فکر میکنه که ما آفیس 2013 داریم 🙂 و برنامه رو نصب میکنه. وقتی کار نصب برنامه تموم شد میریم Word 2016 رو باز میکنیم و میبینیم که یک خطا میده:

ممکنه این خطا رو اصلا نبینیم و معنیش این هست که کلا ورد سعی نکرده Add in رو لود کنه. باید از قسمت مربوطه اضافه اش کنیم:


حالا باید چکار کنیم؟ خوشبختانه این برنامه یک Log داره و نزدیکی همون فایل msi هم هست. این لاگ در این ادرس نوشته میشه (مستقیما در پنجره ی run قابل اجرا هست)
%AppData%\Virastyar\Log
وقتی لاگ رو باز کنیم میبینیم که اخرین مشکل به چه دلیلی بوده:
<ExceptionInfo>System.NotSupportedException: Specified method is not supported.
at VirastyarWordAddin.SettingsHelper.GetOfficeVersion()
at VirastyarWordAddin.SettingsHelper.GetVirastyarTemplateName()
at VirastyarWordAddin.ThisAddIn.LoadAddinTemplate(Boolean& needsReset)
at VirastyarWordAddin.ThisAddIn.<ThisAddIn_Startup>b__3()</ExceptionInfo>
یک استثنا NotSupportedException پرتاب شده که در بالای call stack این هست:
VirastyarWordAddin.SettingsHelper.GetOfficeVersion()
خوب ظاهرا برنامه با زبان سی شارپ نوشته شده و میتونیم بریم اینجا ببینیم چه خبره. با یک برنامه مثل DnSpy میشه این کار رو کرد. محل نصب فایل اینجا هست:
C:\Program Files (x86)\Virastyar\Add-in
خوب وقتی بریم سراغ تابع مربوطه در فایل VirastyarWordAddin.dll خواهیم دید:

کاری که متد انجام میده این هست: ورژن آفیس که یک مقدار رشته ای (string) هست رو اول چک میکنه ببینه ایا برابر “11.0” هست؟ اگر بود یک مقدار بر میگردونه وگرنه با “12.0” چک میکنه و همینطور تا “15.0” اگر “15.0” هم نبود خطا رو ایجاد میکنه:
throw new NotSupportedException();
و در همین جاست که اجرای برنامه متوقف میشه و اون پیغام خطا رو میبینیم. خوب ما چکار میتونیم بکنیم، خوشبختانه برنامه ی DnSpy به ما اجازه ادیت سورس کد رو میده !!!! واسه همینه میگن همیشه باید سورس کد دات نت رو Obfuscate کنید و بدید دست کاربر که همینطوری دست نبره توی سورس. البته این برنامه کد باز یا open source هست و ما از نظر قانونی برای این کار مشکلی نداریم. خوب برای اعمال کمترین تغییر توی فایل میریم به نمای مشاهده ی کد IL، روی صفحه راست کلیک میکنیم Edit IL Instruction رو انتخاب میکنیم، همونطور که میدونید کد سی شارپ به یک کد سطح پایین تر بنام IL یا Intermediate Language تبدیل میشه. خلاصه حالا میخوایم یه کاری کنیم که این خطا ایجاد نشه. احتمالا از مقدار برگشتی از این تابع استفاده ی خاصی نمیشه و اگر اشتباه باشه در برنامه خطایی ایجاد نمیشه. فقط احتمالا یک جا نسخه ی آفیس اشتباهی به کاربر نمایش داده میشه که مشکلی نیست (اینتطوری هم نبود، لطفا به اخر نوشته رجوع کنید) برای ما. مثلا میتونیم سورس رو ویرایش کنیم و کلا بزاریم در هر حال مقدار OfficeVersions.Office2013 رو برگردونه. ولی خوب میخوایم تغییرات کمی رو اعمال کنیم. این مرحله یکم زمان برد و نتیجه رو برای شما مینویسم. بعنوان یک راه حل دم دست در خط 21 اگر مقدار “15.0” به “0000” تغییر پیدا کنه و همچنین عملگر =! به == تغییر پیدا کنه اون وقت هیچ وقت استثنا پرتاب نمیشه و میشه امیدوار بود که کمترین تغییر رو در فایل داده باشیم. چون نسخه ی آفیس که هیچ وقت 0000 نیست. و سایز فایل در نهایت تغییری نمیکنه چون طول “15.0” و “0000” برابر هست. خوب یک راست کلیک میکنیم و میریم به قسمت Edit IL Intrusctions:

خوب در Index 53 (آفست 006F) میبینیم که آپ کد brtrue.s هست. اگر با آپ کد و اسمبلی کمی آشنایی داشته باشید خوب متوجه میشید. این آپ کد رو اگر تبدیلش بکنیم به brfalse.s اونوقت عملگر =! رو که بالاتر گفتم تبدیل کردیم به ==. خوب روش کلیک میکنیم و brfalse.s رو انتخاب میکنیم (دوتا بالاتره توی لیست) :

اینطوری عملگر هم تغییر پیدا کرد. برای تغییر “15.0” به “0000” دوباره میریم به قسمت Edit IL Instructions و حالا بجای مقدار 15.0در ایندکس 45 (آفست 005d) چهار تا صفر وارد میکنیم و بر میگردیم به نمایش کد سی شارپ:

ظاهرا همه چیز همونطوری که میخواستیم شده. حالال از منوی File گزینه ی Save Module روی همون فایل اولیه ذخیره اش میکنیم (اگر ارور داد مشکل UAC هست و برنامه ی DnSpy باید بعنوان admin اجرا بشه). خوب بریم امتحان کنیم ببینیم افزونه بدون مشکل اجرا میشه یا نه. ورد رو اجرا میکنیم و از این مسیر میریم افزونه رو فعال میکنیم:


میبینیم که افزونه فعال نمیشه