epsi1on
epsi1on
خواندن ۲۰ دقیقه·۵ سال پیش

آموزش نصب افزونه‌ی ویراستیار روی ورد ۲۰۱۶ و بالاتر

دانلود فایل‌ها:

- فایل وصله برای ویراستیار نسخه 4 بتا: لینک اصلی، لینک کمکی، لینک VirusTotal

- فایل نصب ویراستیار نسخه 4 بتا: لینک کمکی، لینک اصلی


- فایل وصله برای ویراستیار نسخه 3.5: لینک اصلی، لینک کمکی، لینک VirusTotal

- فایل نصب ویراستیار نسخه 3.5: لینک کمکی، لینک اصلی


نکته‌ی منفی ۲: به نظرم الان اینترنت بزرگترین منبع اطلاعاتی روی کره‌ی زمین هست. متاسفانه طبق اطلاعاتی که موجوده، طرح اینترنت طبقاتی پتانسیل این رو داره که دسترسی به این حجم اطلاعات رو در کشورمون به شدت انحصاری کنه. اگر این اتفاق بیوفته یعنی فقط قشر کوچکی از مردم به اطلاعات بازِ داخلِ اینترنت دسترسی خواهند داشت!!! وا اینترنتا...

نکته‌ی منفی ۱: همین چند وقت پیش بود که صحبت از طری اینترنت طبقه‌بندی شده بود و خیلی‌ها به خاطر طرح کارشناسی نشده معترض بودن منجمله پاراگراف بالا. الان هم باز صحبت از طرح عجیب دیگری هست تحت عنوان برداشتن فیلترینگ بصورت کامل. به نظرم حذف فیلترینگ بصورت کامل هم میتونه مثل اینترنت طبقه‌بندی شده اثرات مخربی به جا بزاره. تنها معیار طرح باید کارشناسی باشه، به نظرم طرح کارشناسی نشده محکوم به شکست هست، دقیقا عین طرح طبقه‌بندی‌ اینترنت که کارشناسی نشده بود.

نکته‌ی ۰: متاسفانه در شرایطی هستیم که باید نرم‌افزارهای اوپن‌سورس وطنی رو هم crack کنیم! مثلا ویراستیار اوپن‌سورس هست. این چه وضعشه آخه؟! ویراستیار به سفارش یک اُرگان دولتی تهییه شده ولی ناقص منتشر شده و می‌بایست سورس‌کُد‌ِش هم همراهش منتشر می‌شد! واقعا تعطیلیم ...

نکته‌ی ۱ : ظاهرا در برخی موارد افزونه‌ی ویراستیار بر روی آفیس 64بیتی اجرا نمی‌شود، ولی ظاهرا مشکلش با 32 بیتی ها کمتر هست پس اگر روی آفیس 64 بیتی کار نکرد می‌توانید با مدل 32 بیتی امتحان کنید.

نکته‌ی ۲: در صورتی که این وصله روی دستگاه شما جواب نمیده و نتونستید ویراستیار رو اجرا کنید، توی نظرات همین پست پیغام بدید شاید با کمک همدیگر بتونیم رفعش کنیم.

نکته‌ی ۳: دوستان اگر تمایل داشته باشین میتونیم ویراستیار رو دیکامپایل کنیم و سورسش رو بزاریم روی گیت‌هاب تا توسعه اش ادامه پیدا کنه. کارش یکم حجیمه و همت جمعی می‌خواد. اگر مایل به کمک‌اید لطفا توی نظرات بگید. با خودم ۵ نفر بشیم کار رو شروع میکنیم.



ویراست‌یار
ویراست‌یار


مراحل نصب ویراستیار ۴/۰ بتا در یک نگاه

ابتدا فایل وصله را از این لینک دانلود کنید (هردو لینک یک فایل هستند) : لینک اصلی، لینک کمکی،

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


1- اگر برنامه ویراستیار روی دستگاه نصب است، ابتدا برنامه‌ی ویراستیار را از طریق کنترل پنل Uninstall کنید.



2- فایل patch.reg که داخل فایل وصله است را اجرا کنید

اعمال فایل patch.reg
اعمال فایل patch.reg



3- فایل نصب نسخه‌ی 4 بتا ویراستیار را از لینک زیر از سایت سورس‌فورج دانلود نموده و نصب نمایید

دانلود ویراستیار 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بروید و افزونه را فعال کنید:

فعال کردن افزونه از طریق منوی options
فعال کردن افزونه از طریق منوی options



7- وقتی به این مرحله میرسید افزونه باید اجرا شده باشه، در اندک مواردی که نشه لطفا ادامه مطلب رو بخونید

اگر مشکلی بود چه؟

خوب توی این حالت، اول باید بفهمیم مشکل از کجاست. باید دست به آچار بشیم و در حد 10 دقیقه زمان بزاریم. Word بطور پیش فرض خطاهایی که اتفاق می افتند رو نمایش نمیده و پنهانشون میکنه، اول باید یک کاری بکنیم که پیغام خطا رو نمایش بده و پنهان نکنه، برای این کار باید

1- یک متغیر محلی بسازیم

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

1- ساخت متغیر محلی

خوب اول باید یک متغیر محلی ویندوز (Environment Variable) بسازیم با نام VSTO_SUPPRESSDISPLAYALERTS و مقدار 0 تا آفیس خطایی که ایجاد میشه رو به ما نشون بده و پنهانش نکنه. ساخت متغیر محلی توی هر نسخه از ویندوز متفاوته، من از طریق استارت منو اینطوری انجام دادم:

VSTO_SUPPRESSDISPLAYALERTS متغیر محلی
VSTO_SUPPRESSDISPLAYALERTS متغیر محلی

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

فعال کردن افزونه در ورد
فعال کردن افزونه در ورد


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

پیغام خطای لود کردن افزونه
پیغام خطای لود کردن افزونه


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

File Menu > Account > About Word

پیدا کردن نسخه‌ی دقیق Word
پیدا کردن نسخه‌ی دقیق 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 بتا رو بارگیری کنیم. این آدرس الان کار میکنه:

https://sourceforge.net/projects/virastyar/files/Virastyar/4.0%20Beta/Virastyar%204%20Beta.zip/download

ادرس یک فایل فشرده zip هست که توش فایل نصب و دو فایل PDF داره. یک فایل نصبی داره که بعد از اجرا اگر فقط آفیس 2016 رو داشته باشید این خطا رو خواهید دید.


خطای عدم وجود آفیس 2013
خطای عدم وجود آفیس 2013

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

فایل لاگ نصب
فایل لاگ نصب

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


برنامه ی LessMSI
برنامه ی LessMSI

میبینیم که شرط اینکه برنامه نصب بشه اینه که در ادرس زیر در registry باید یک مقدار وجود داشته باشه. اطلاعات بیشتر

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\word\InstallRoot]

و اون مقدار هم نامش باید path باشه، خوب بصورت دستی درستش میکنیم:

RegEdit
RegEdit

و فایل رو دوباره اجرا میکنیم. نصاب برنامه گول خورد و حالا فکر میکنه که ما آفیس 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 خواهیم دید:

dnspy
dnspy

کاری که متد انجام میده این هست: ورژن آفیس که یک مقدار رشته ای (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 رو انتخاب میکنیم (دوتا بالاتره توی لیست) :

تغییر Instruction در ILCode
تغییر Instruction در ILCode

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


نتیجه تغییرات
نتیجه تغییرات


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


تنظیمات ورد
تنظیمات ورد


فعالسازی افزونه
فعالسازی افزونه


میبینیم که افزونه فعال نمیشه (طبیعتا به خاطر وجود خطا هست) و هیچ پیغام خطایی هم نشون داده نمیشه. خوب این خوب نیست چون باید خطا رو بفهمیم تا بتونیم تصحیحش کنیم. بعد از کمی جستجو توی اینترنت میبینیم که باید یک متغیر محلی ویندوز (Environment Variable) بسازیم با نام VSTO_SUPPRESSDISPLAYALERTS و مقدار 0 تا آفیس خطایی که ایجاد میشه رو به ما نشون بده و پنهانش نکنه:

ساخت متغیر محیطی ویندوز
ساخت متغیر محیطی ویندوز

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


جزییات خطا
جزییات خطا


این پیغام خطا مربوط به امضا دیجیتال تولید کننده نرم افزار هست. چون ما فایل dll رو ادیت کردیم، و قبل از ادیت ما بصورت دیجیتالی امضا شده بوده حالا دیگه اون امضای قدیمی قابل استفاده نیست (برای اطلاعات بیشتر در مورد امضای دیجیتالی جستجو کنید). ما تازه سعی کردیم حداقل تغییرات رو بدیم، ولی حتی اگر یک بیت هم تغییر میکرد همین اتفاق میوفتاد. حالا باید اسمبلی رو دوباره امضا کنیم. من چون ویژوال استودیو روی کامپیوترم نصب بود، اول ویژوال استودیو رو Run as Administrator میکنم. بعد از صفحه ی اصلی منوی Tools زیر منوی Command Line و مورد Developer Command Prompt یک صفحه ی cmd باز میکنم. حالا با دستور cd (مخفف change directory) میرم به ادرسی که ویراستیار نصب شده:

cd "C:\Program Files (x86)\Virastyar\Add-in"

دقت داشته باشید که اگر cmd رو مستقیما باز کنید این دستوراتی که در ادامه میزنیم رو نخواهد شناخت ولی command promptِ این ویژوال استودیو مخصوص همین کار هست. خوب حالا اول اصالت امضای فایل رو چک میکنیم:

sn.exe -v VirastyarWordAddin.dll


چک کردن Strong Name
چک کردن Strong Name

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

If the original assembly is not so marked, then you can disassemble it with ildasm.exe, then re-asssemble it with ilasm.exe and specify the /key argument. References: [1] [2].

Example:

> ildasm /all /out=MYASSEMBLY.il MYASSEMBLY.dll > ilasm /dll /key=key.snk MYASSEMBLY.il

البته نرم افزراهای اماده هم هست بنام strong name resigner که این دردسر ها رو هم نداره. به هر حال حالا ما اول یک پوشه بنام temp در همون محل نصب میسازیم، فایل VirastyarWordAddin.dll رو به داخلش کپی میکنیم، با دستور cd میریم به پوشه و با این دستور فایل dll رو تبدیل به netmodule میکنیم:

> cd temp

> ildasm /all /out=VirastyarWordAddin.il VirastyarWordAddin.dll

اگر برای شما پیغام Unable to open 'VirastyarWordAddin.il' for output. رو داد احتمالا برای UAC (User Access-Account Control) هست. پس فایل رو ببرید به یه فولدر که این خطا رو نده مثل c:\temp .

حالا با اجرای دستور

> ildasm /all /out=VirastyarWordAddin.il VirastyarWordAddin.dll

بعد از اجرا کلی فایل توی فولدر temp ساخته میشه:


خروجی ILDASM
خروجی ILDASM

حالا باید یک فایل snk رندوم بسازیم برای امضا، (بعد از جستجو میرسیم به این)

sn -k keyPair.snk

این دستور یک فایل رندوم snk درست میکنه و میزاره توی فایل keyPair.snk. حالا باید دوباره امضا کنیم:

ilasm /dll /key=keyPair.snk VirastyarWordAddin.il

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


امتحان با sn.exe
امتحان با sn.exe


خداروشکر درست شده و مثل قبل خطا نمیده.

حالا باید فایل VirastyarWordAddin.vsto رو ویرایش کنیم، دقت داشته باشید برای انجام این کار احتمالا نیاز به دسترسی Admin هست، پس notepad رو run as administrator میکنیم و فایل زیر رو بازش میکنیم

C:\Program Files (x86)\Virastyar\Add-in\VirastyarWordAddin.vsto

دقت داشته باشید که فایل قدیمی و اصلی دارای public token key این هست: publicKeyToken="ff2cf56caa65669b"

و بعد از تغییر public tokenش تغییر میکنه و اینی که ما درست کردیم این هست (برای شما متفاوت خواهد بود چون کلیدمون رو رندوم درست کردیم):

خروجی sn.exe
خروجی sn.exe

یعنی public token جدید همونی هست که با 634b8 شروع میشه. حالا فایل رو از پوشه temp منتقل میکنیم به محل اصلیش



کپی فایل با دستور copy
کپی فایل با دستور copy


حالا باید فایل vsto رو تغییر بدیم این تغییرات رو توش اعمال کنیم:

چهارجا رو باید تغییر بدیم، سه تا مربوط به public token هست و یکی هم DigestValue هست بعلاوه حجم فایل جدید هم تغییر کرده. اول از DigestValue شروع میکنیم، توی خط 17 فایل vsto نوشته شده که Hash فایل VirastyarWordAddin.dll برابر OHrMWAYBpQyS3bztqdIfrw/b79Q= هست که ظاهرا این مقدار بصورت base64 نشون داده میشه. الگوریتم هم در خط 16 نوشته شده: sha1. بعد از تغییر حتما hash تغییر کرده و ما باید هش جدید رو بگیریم و تبدیل به Base64 کنیم و جای قبلی بزاریم. من چون روی کامپیوترم برنامه ی 7zip رو دارم سریع هش فایل رو حساب میکنم که این میشه

d3a3e56c75e6eec7d27586e6925bee30707098eb

خروجی در فرمت هگزادسیمال هست، باید تبدیل بشه به base64، پس از جستجو به این ادرس میرسیم:

https://base64.guru/converter/encode/hex

حالا Hash فایل جدید رو تبدیل به base64 میکنیم و در خط 17 جایگذاری میکنیم:

<dsig:DigestValue>06PlbHXm7sfSdYbmklvuMHBwmOs=</dsig:DigestValue>

و همچنین publicKeyToken قبلی که ff2cf56caa65669b بوده رو با نسخه جدیدش که ساختیم و روی کامپیوتر من "634b8f05897f26c9" هست جایگزین میکنیم. در سه جای فایل این رو باید جایگزین کنیم، یکی خط 3 یکی خط 11 و یکی هم در خط آخر (خط آخر چون طولانی هست خودش چند خط نشون داده میشه).

و در نهایت تغییرات رو ذخیره میکنیم همچنین خط 270 و 271 از فایل VirastyarWordAddin.dll.manifest باید تغییر کنه به مشخصات جدید:

<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="VirastyarWordAddin.dll" size="4462592">

<assemblyIdentity name="VirastyarWordAddin" version="4.0.0.32694" publicKeyToken="634b8f05897f26c9" language="neutral" processorArchitecture="msil" />

و خط آخر فایل هم همینطور، در اصل سایز و توکن فایل dll تغییر کرده و باید در همه جا منعکس بشه وگرنه خطا میگیره! حالا Word رو که باز کنیم باز هم خطا میگیریم که اینیکی در مورد عدم تطابق manifest فایل با خود فایله؟! یعنی چی؟ خوب خدمم نفهمیدم :) یعنی چیزی که من فهمیدم اینه هنوز هم چند تا تغییر باید با notepad++ p روی فایل بدیم، ظاهرا Public Token قدیمی توی فایل dll هم نوشته شده، و خوشبختانه فرمت تکس هم هستن! پس میزنیم به سیم آخر و فایل dll رو توی notepad++ باز میکنیم و توکن قبلی رو با توکن جدید که هر دو فرمت text هستن جایگزین کنیم و دوباره فایل رو امضا کنیم و تمام:

ویراستیار در حال اجرا روی ورد 2019
ویراستیار در حال اجرا روی ورد 2019

ویرایش: بعد از انتشار این نوشته بعضی دوستان گفتند که همچنان مشکل دارند و افزونه اجرا نمیشه و دلیلش امضا ی فایل vsto هست، خود فایل vsto یک فایل xml هست و میتونیم کلا امضاش رو حذف کنیم، فقط باید تگ های مربوطه از فایل پاک بشن، که در فایلی که ابتدای این پست بعنوان راه حل دوم گذاشته شده این کار انجام شده

افزونه ی ویراستیار بدون مشکل خاص روی ورد 2016 اجرا خواهد شد. احتمالا ملزومات و runtime ورد 2019 با 2016 تفاوتی نداشته باشه و روی ورد 2019 هم بدون مشکل اجرا بشه، ولی من تست نکردم. ممکنه بعضی قابلیت های برنامه درست کار نکنه روی ورد 2016، برای نتیجه ی تست روی ورد 2016 لطفا به انتهای همین نوشته مراجعه کنید.

خوب بطور خلاصه ما سه تا کار کردیم، یکی اینکه با تغییر رجیستری نصاب برنامه رو گول زدیم که ما ورد 2013 داریم و گول هم خورد و ویراستیار نصب شد. بعد فایل VirastyarWordAddin.dll رو دیکامپایل و ویراش کردیم، بعد فایل رو دوباره امضا کردیم و در نهایت فایل VirastyarWordAddin.vsto و VirastyarWordAddin.dll.manifest رو با ویرایشگر متنی مثل نوت پد پلاس پلاس (که خیلی برنامه ی کارایی هست) ادیت کردیم و تمام. توی قسمت بعد فایلهای اماده هست که میتونید مستقیم دانلود کنید و نیازی به این کارهای سخت هم نیست. فقط دقت داشته باشید همونطور که من نوعی تونستم کد C# رو توی DLL ادیت کنم، میتونستم سورس یک ویرویس یا یک بد افزار رو توی فایل بزارم و برای شما مشکل ساز بشه. برای همینه که همیشه باید در کرک کردن برنامه ها و حتی خود ویندوز بسیار زیاد دقت داشت چون ممکنه کرک ها الوده باشند. حتی المقدور از نسخه ی trial برنامه استفاده کنید و وقتی بعد از یک ماه منقضی یا expire شد از سریال استفاده کنید و در اخر اگر سریال هم نمیخورد از کرک استفاده کنید. خودم بارها دیده ام که کرک ها دارای تروجان و یا ویروس هستند. این قسمت در چند بخش نوشته شد ممکنه یک جاهاییش کم و کسری داشته باشه یا جا افتاده باشه که نگارنده سعی کرد این اتفاق نیافته.

2- راه راحت‌تر

خوب اگر قسمت بالا رو خونده باشید روند رو فهمیدید ولی یکبار دیگه توضیح میدم:

افزونه موقع نصب چک میکنه ببینه ایا Office 2013 یا 2010 یا 2007 یا 2003 روی رایانه نصب هست یا خیر، اگر نبود نصب رو متوقف میکنه و پیغام خطا میده و خارج میشه. پس باید نصاب رو گول بزنید تا فکر کنه افیس 2013 نصب هست. چطور؟ باید این ادرس در رجیستری ثبت بشه:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\word\InstallRoot]

"path"="c:\\temp"

در قدم بعد باید نسخه ی 4 بتا افزونه رو نصب کنیم و بعدش روی دو تا فایل VirastyarWordAddin.dll و VirastyarWordAddin.vsto تغییراتی اعمال کنیم تا موقع اجرا روی افیس 2016 خطا ندن و تمام. در بالا مفصلا در موردش صحبت شد و در این قسمت فایلهای آماده رو میزارم که بشه راحت دانلود کرد و استفاده کرد. روند به این صورت هست که ابتدا نسخه ی قبلی ویراستیار رو در صورت وجود پاک میکنیم. بعد این فایل رو دانلود میکنید:

http://us.cdn.persiangig.com/download/mcDncVg6FX/Virastyar-patch.zip/dl

6559c019166d54d3d7271157c775176590ae56c8cd0fcdc18eb98c89f9b1ceb7


داخلش چند تا فایله و یک فایل توضیحات Readme.txt،

- فایل patch.reg رو اجرا و اعمال میکنیم

- برنامه رو نصب میکنیم

- همه ی فایلها رو توی فولدر نصب C:\Program Files (x86)\Virastyar\Add-in کپی و جایگزین میکنیم
- ورد رو باز میکنیم، اگر افزونه در حال اجرا نبود از منوی Options باید بریم فعالش کنیم

این هم تصویر افزونه در ورد 2016

اجرا شدن افزونه ویراستیار در ورد 2016
اجرا شدن افزونه ویراستیار در ورد 2016

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

صحه تنظیمات ویراستیار
صحه تنظیمات ویراستیار

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

راه حل خیلی راحت هم درون فایل Readme داخل فایل Virstyar-patch.zip نوشته شده است.

اجرای افزونه ی ویراستیار در ورد 2016
اجرای افزونه ی ویراستیار در ورد 2016
اجرای افزونه ویراستیار در ورد 2019
اجرای افزونه ویراستیار در ورد 2019

نتیجه ی امتحان (test) روی آفیس 2016

امروز یک عدد فایل ورد کوچک را با این افزونه ویراستاری کردم، قسمت غلطهای املایی افزونه درست کار میکند ولی بعضی وقتها درست اسکرول نمیکند، مثلا وقتی یک غلط املایی جدید پیدا میکند خودکار نمیره روی اون غلط و باید کاربر با غلطک موش واره غلط رو پیدا کنه :)

پانوشت ها

پانوشت ۱: ظاهرا سورس نسخه ی 2011 افزونه ی ویراستیار (نسخه های اول برنامه) در گیت هاب قرار گرفته و الان واقعا با GNU GPL همخوانی داره، ولی هنوز هم سورس نسخه های آخر ان در دسترس نیست.

پانوشت ۲: این روش هم روی افیس 2016 و هم 2019 تست شده و کار کرد

پانوشت ۳: سعی شد از عبارات فارسی استفاده بشه و انگلیسی ها به زبان انگلیسی و از عبارات فینگیلیش استفاده نشه، مثلا بجای اینستال از نصب استفاده شد، ولی خوب به هر حال ببخشید بعضی جاهاش از دستم در رفت یا بلد نبودم

پانوشت ۴: متاسفانه بعد از انتشار این پست، مشاهده شد که سایتهای دیگه بدون ارجاع به این پست از این فایلها به نام خودشون استفاده کردند تا برن در صدر نتایج گوگل... لطفا اگر بلاگر هستید در پست وبلاگها به این نوشته لینک بدید تا بعنوان نوشته اصلی شناسخته بشه...

وردغلط املاییبرنامه نویسیفارسی
ذره‌ای کوچک در هستی
شاید از این پست‌ها خوشتان بیاید