Залежність: Microsoft Word?

Я написав невелику програму, яку я розповсюджую деяким своїм друзям. Вона взаємодіє з веб-сторінками, і єдина залежність, яку я вважаю непарною, - Microsoft.mshtml.dll для взаємодії з деякими веб-елементами керування.

Ми помітили непарну поведінку, що на деяких комп'ютерах вона працювала, а в інших - ні. Я сказав їм, щоб установити .Net 4.0 Framework FULL, а не профіль клієнта. Це все одно не спрацювало.

Один з моїх друзів зауважив, що його машини працювали, і Microsoft Word встановлений, інші не зробили. Тому він встановив пробну версію і чарівно, моя програма почала працювати!

Що встановлено з Microsoft Word, що не входить до .Net Framework? Чи можу я надіслати їм потрібні файли?

Примітка. Спочатку я використав програму встановлення, і вона працювала нормально, але я не міг з'ясувати, як оновити програму, щоб ми повернулися до мене, просто надіславши їм додаток у поштовому вигляді. Так що, будь ласка, не відповідайте, кажучи "зробіть програму установки". В даний час я намагаюся зрозуміти, як зробити оновлення, це не тема обговорення тут.

Дякую!

Редагувати: я невідомо додав будь-яку залежність від Word ...

3
ти розповсюджував файл Microsoft.mshtml.dll разом із вашою програмою у папці смітника додатків? codeproject.com/Questions/212262/…
додано Автор Geoff, джерело
ти розповсюджував файл Microsoft.mshtml.dll разом із вашою програмою у папці смітника додатків? codeproject.com/Questions/212262/…
додано Автор Geoff, джерело
Що ви залежите від mshtml для? Що це робить? Коли ви говорите, що взаємодіє з веб-сторінками, ви маєте на увазі, що екран подряпає інші сторінки? Маніпулює іншими сторінками? Я не вважаю, що Microsoft.mshtml.dll є частиною .net Framework, і, ймовірно, встановлена ​​офісною системою. Можливо, вам доведеться переконатися, що це dll скопійовано у ваш вихідний каталог і завантажено з вашим додатком (не впевнені щодо вимог ліцензування, хоча це).
додано Автор Erik Funkenbusch, джерело
Ось приклад: ClickLink (HtmlElement linkToClick) {HTMLAnchorElementClass linkElement = (HTMLAnchorElementClass) linkToClick.DomElement; linkElement.click (); } HTMLAnchorElementClass в mshtml.
додано Автор Steve H., джерело
Ось приклад: ClickLink (HtmlElement linkToClick) {HTMLAnchorElementClass linkElement = (HTMLAnchorElementClass) linkToClick.DomElement; linkElement.click (); } HTMLAnchorElementClass в mshtml.
додано Автор Steve H., джерело
@Geoff - Так, у мене є.
додано Автор Steve H., джерело
Ви згадуєте про те, що коли ви встановили, що він працював, подивіться на залежність свого старого інсталятора, щоб визначити, що може бути відсутнім.
додано Автор Mark Hall, джерело
Ви поширювали всі бібліотеки DLL, які були поруч з вашим додатком, коли воно було побудовано? Visual Studio повинна перемістити всі потрібні бібліотеки DLL у каталог bin \ Release проекту. Можливо, властивість "Copy Local" для відсутньої залежності встановлено на "false", тому він ніколи не буде скопійований у вихідний каталог ...?
додано Автор Chris Mantle, джерело
Ви поширювали всі бібліотеки DLL, які були поруч з вашим додатком, коли воно було побудовано? Visual Studio повинна перемістити всі потрібні бібліотеки DLL у каталог bin \ Release проекту. Можливо, властивість "Copy Local" для відсутньої залежності встановлено на "false", тому він ніколи не буде скопійований у вихідний каталог ...?
додано Автор Chris Mantle, джерело

8 Відповіді

якщо ви використовуєте деякі бібліотеки, такі як Microsoft.mshtml.dll, які не входять до складу .Net, але мають Native. Net, то існують шанси, що для цих бібліотек не вистачає цільової машини. Наприклад, наприклад Microsoft.mshtml.dll поставляється з інструментами Visual Studio для офісної підтримки тощо. Якщо Office/Visual Studio не встановлено на цільовій машині, програма не працюватиме.

В якості альтернативного рішення ідентифікуйте їх і зберігайте локальну копію цих залежних DLL і відправляйте їх у ваш пакет. Але це не найкраща практика.

Але Paul_R сказав це правильно. Визначте свою інфраструктуру клієнта, плануйте та перевірте один раз (на цільовому середовищі) перед її випуском. Майте на увазі, що у вас є розробник, але інші не.

2
додано

якщо ви використовуєте деякі бібліотеки, такі як Microsoft.mshtml.dll, які не входять до складу .Net, але мають Native. Net, то існують шанси, що для цих бібліотек не вистачає цільової машини. Наприклад, наприклад Microsoft.mshtml.dll поставляється з інструментами Visual Studio для офісної підтримки тощо. Якщо Office/Visual Studio не встановлено на цільовій машині, програма не працюватиме.

В якості альтернативного рішення ідентифікуйте їх і зберігайте локальну копію цих залежних DLL і відправляйте їх у ваш пакет. Але це не найкраща практика.

Але Paul_R сказав це правильно. Визначте свою інфраструктуру клієнта, плануйте та перевірте один раз (на цільовому середовищі) перед її випуском. Майте на увазі, що у вас є розробник, але інші не.

2
додано

Ну, найкраще уникати залежностей від інших програм. Отже, спробуйте уникати використання методів/структур даних, які пропонуються цією бібліотекою. Швидше за все, існує бібліотека, яка є рідною для .NET, яка буде робити те, що шукаєш. Якщо ні, подивіться на деякі бібліотеки з відкритим кодом, які можна легко включити разом із вашою програмою у формі .dll (навіть у деяких випадках ви можете навіть приєднатися до програми). Якщо ви виконуєте аналіз html, я повністю рекомендую HTMLAgilityPack ( http://htmlagilitypack.codeplex.com/ )

1
додано

Ну, найкраще уникати залежностей від інших програм. Отже, спробуйте уникати використання методів/структур даних, які пропонуються цією бібліотекою. Швидше за все, існує бібліотека, яка є рідною для .NET, яка буде робити те, що шукаєш. Якщо ні, подивіться на деякі бібліотеки з відкритим кодом, які можна легко включити разом із вашою програмою у формі .dll (навіть у деяких випадках ви можете навіть приєднатися до програми). Якщо ви виконуєте аналіз html, я повністю рекомендую HTMLAgilityPack ( http://htmlagilitypack.codeplex.com/ )

1
додано

Щоб відповісти на питання, яке ви запитуєте: LOT встановлюється з Word, який не встановлений з .NET Framework. Слово дуже складне застосування.

Теоретично, так, ви можете надіслати їм потрібні файли. На практиці ви вручну відтворюєте половину програми Word, а також порушуєте авторське право. Будь ласка, не робіть.

Я згоден з Paul_R: намагайтеся уникнути залежності, якщо ваші "клієнти" не є користувачами Word.

0
додано

Щоб відповісти на питання, яке ви запитуєте: LOT встановлюється з Word, який не встановлений з .NET Framework. Слово дуже складне застосування.

Теоретично, так, ви можете надіслати їм потрібні файли. На практиці ви вручну відтворюєте половину програми Word, а також порушуєте авторське право. Будь ласка, не робіть.

Я згоден з Paul_R: намагайтеся уникнути залежності, якщо ваші "клієнти" не є користувачами Word.

0
додано

Що встановлено з Microsoft Word, що не входить до .Net   Framework?

Сам додаток Microsoft Word і всі його підтримуючі файли.

Чи можу я надіслати їм необхідні файли?

Так. Проте, перед тим, як продовжити, потрібно розглянути кілька питань.

  • Можливо, нелегально перерозподілити деякі речі, які у вас залежить. Протектор уважно опишіть тут і проведіть своє дослідження, перш ніж продовжити.
  • Якщо ви покладетеся до системи, яка потребує залежностей, у вас виникнуть проблеми з не існуючими залежностями або існуючими іншими версіями залежностей.

Найбезпечніше робити ставку - це знайти щось легке і вільно розповсюджуване, яке має потрібну вам функціональність, а не Microsoft Word.

Крім того, ви можете відключити функцію вашої програми, яка використовує залежності, які можуть не бути присутніми.

Edit: If you're going to deploy the dependencies, it is just a matter of identifying them and ensuring they are packaged. Tools like .NET Reflector are great for identifying all of the downstream dependencies.

0
додано

Що встановлено з Microsoft Word, що не входить до .Net   Framework?

Сам додаток Microsoft Word і всі його підтримуючі файли.

Чи можу я надіслати їм необхідні файли?

Так. Проте, перед тим, як продовжити, потрібно розглянути кілька питань.

  • Можливо, нелегально перерозподілити деякі речі, які у вас залежить. Протектор уважно опишіть тут і проведіть своє дослідження, перш ніж продовжити.
  • Якщо ви покладетеся до системи, яка потребує залежностей, у вас виникнуть проблеми з не існуючими залежностями або існуючими іншими версіями залежностей.

Найбезпечніше робити ставку - це знайти щось легке і вільно розповсюджуване, яке має потрібну вам функціональність, а не Microsoft Word.

Крім того, ви можете відключити функцію вашої програми, яка використовує залежності, які можуть не бути присутніми.

Edit: If you're going to deploy the dependencies, it is just a matter of identifying them and ensuring they are packaged. Tools like .NET Reflector are great for identifying all of the downstream dependencies.

0
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug