Можно ли запутать приложение ClickOnce, созданное в Visual Studio 2008? - PullRequest
9 голосов
/ 01 февраля 2010

Я создал приложение WPF и запутал основной .exe внешним инструментом.

Теперь у меня проблемы с публикацией его как приложения ClickOnce, потому что Visual Studio каким-то образом перекомпилирует основной исполняемый файл.

Я снял флажки сборки в разделе Solution → Configuration Manager, но это не сработало: исполняемый файл продолжает перестраиваться, когда я публикую приложение в http://localhost/MyApplication

Можно ли развернуть мое приложение ClickOnce без перекомпиляции текущего проекта?

Если это не так, есть ли бесплатный инструмент для создания приложения ClickOnce с конкретными желаемыми файлами?

Ответы [ 4 ]

7 голосов
/ 01 февраля 2010

Отказ от ответственности: я работаю в PreEmptive Solutions, создателях Dotfuscator.

Проблема с решением Джареда состоит в том, что задача посткомпиляции выполняется слишком поздно в процессе компоновки, поскольку шаги компоновки ClickOnce создают манифесты (включая сигнатуры сборок, запутывание которых изменяется) задолго до того, как посткомпоновка сработает. Вы можете взломать файл MSBuild (ваш файл .csproj / .vbproj), чтобы вызвать задачу обфускации на шаге AfterCompile, и заставить обфускатор сбросить обфусцированные сборки в каталог bin сборок, но это неприятно.

Второй альтернативой является использование инструментов Mage / MageUI для воссоздания манифестов ClickOnce путем публикации приложения, обфусцирования сборок, перезаписи опубликованных сборок обфусцированными версиями и последующего запуска Mage для воссоздания манифестов, как показано здесь . Документация для утилиты Mage здесь .

Третий вариант - если ваш обфускатор - версия Dotfuscator Professional версии 4.6.1010 или выше. Dotfuscator имеет возможность непосредственно читать манифест развертывания ClickOnce в качестве входных данных, запутывать сборки и выводить как обфусцированные сборки, так и полностью обновленные файлы манифеста. См. здесь для начальной точки.

2 голосов
/ 09 марта 2010

Только к вашему сведению, это обрабатывается в Visual Studio 2010.

Тем временем вы должны опубликовать в папке, скрыть сборки и повторно подписать развертывание, используя Mage или MageUI. Это связано с тем, что ClickOnce хэширует сборки, а когда вы запутываете их, он меняет хэши, и они больше не соответствуют информации в манифесте.

RobinDotNet

2 голосов
/ 01 февраля 2010

Я не совсем понимаю, почему у ClickOnce такое очевидное поведение. Однако вы должны обойти это, вставив шаг обфускации в систему сборки. Попробуйте определить задачу пост-сборки, которая запускает обфускатор против EXE / DLL. Так как это будет выполняться как часть сборки, ClickOnce подберет запутанную пересборку DLL или нет.

Это также избавит вас от необходимости запускать его вручную:)

0 голосов
/ 18 июля 2010

Моя компания пишет программное обеспечение под названием ClickOnceMore, которое идеально подходит для этого сценария.ClickOnceMore - это инструмент ClickOnce, который можно использовать для автоматизации ClickOnce как части большого процесса сборки.

Используя правила включения файлов, вы можете включить свои обфусцированные сборки в проект ClickOnceMore, а затем построить манифесты ClickOnce с помощью командной строки ClickOnceMoreИнструмент.

Многие наши клиенты используют ClickOnceMore для создания манифестов ClickOnce с запутанными сборками.Вы можете найти программное обеспечение на www.clickoncemore.net .

...