InstallShield и ConfuserEx

Я хочу запутать свой исходный код с помощью ConfuserEx, поэтому я создал файл проекта ConfuserEx, который выглядит так:

<project baseDir="." outputDir="." xmlns="http://confuser.codeplex.com">
    <rule pattern="true" inherit="false">
        <protection id="rename" />
        <protection id="ctrl flow" />
        <protection id="ref proxy" />
        <protection id="anti debug" />
        <protection id="anti dump" />
        <protection id="constants" />
        <protection id="resources" />
        <protection id="anti tamper" />
      </rule>
     <module path="MainApplication\bin\Release\MainApplication.exe" />
     <module path="MainApplication\bin\Release\Component.Hardware.dll" />
     <module path="MainApplication\bin\Release\Component.Log.dll" />
     <module path="MainApplication\bin\Release\Component.Service.dll" />
     <module path="MainApplication\bin\Release\Component.Software.dll" />
     <module path="MainApplication\bin\Release\AsynchronousSocket.dll" />
     <module path="MainApplication\bin\Release\Instrumentation.dll" />  
</project>

Поскольку я хочу развернуть свое приложение с помощью установки, я создал установку InstallShield для моего проекта MainApplication-Project. Я выбираю основной выход.

В моем событии Postbuild в Visual Studio я вызываю Confuser.CLI.exe с crproj-файлом в качестве параметра. Однако только MainApplication.exe и AsynchronousSocket.dll + Instrumentation.dll были изменены с помощью ConfuserEx. Файлы 4 Component.*.dll — нет. Должен сказать, что все сборки — это разные проекты. Итак, структура решения моего проекта выглядит так:

MyProject
    MyProject.MainApplication
    MyProject.Component.Hardware
    MyProject.Component.Software
    MyProject.Component.Log
    MyProject.Component.Service
    MyProject.AsynchronousSocket
    MyProject.Instrumentation
    MyProject.Setup
    MyProject.sln
    MyProject.crpoj

Я предполагаю, что я беру неправильные сборки, используемые InstallShield. Так же пробовал брать сборки в MyProject.Component.Service\bin\Release и MyProject.Component.Service\obj\Release но ни один из этих вариантов не сработал. Я не думаю, что использование MainApplication\obj\Release работает, потому что находится только MainApplication.exe.

Может ли кто-нибудь сказать мне, откуда InstallShield берет основной вывод или я упускаю что-то еще?


person FRules    schedule 07.05.2015    source источник


Ответы (1)


Возможным решением является несколько файлов crproj, по одному для каждого двоичного файла, и указание файла crproj для конкретного проекта на этапе после сборки в КАЖДОМ проекте. MainApplication.crproj

<project baseDir="." outputDir="." xmlns="http://confuser.codeplex.com">
    <rule pattern="true" inherit="false">
        <protection id="rename" />
        <protection id="ctrl flow" />
        <protection id="ref proxy" />
        <protection id="anti debug" />
        <protection id="anti dump" />
        <protection id="constants" />
        <protection id="resources" />
        <protection id="anti tamper" />
      </rule>
     <module path="MainApplication\bin\Release\MainApplication.exe" />
</project>

Компонент.Hardware.dll.crproj

<project baseDir="." outputDir="." xmlns="http://confuser.codeplex.com">
    <rule pattern="true" inherit="false">
        <protection id="rename" />
        <protection id="ctrl flow" />
        <protection id="ref proxy" />
        <protection id="anti debug" />
        <protection id="anti dump" />
        <protection id="constants" />
        <protection id="resources" />
        <protection id="anti tamper" />
      </rule>
     <module path="MainApplication\bin\Release\Component.Hardware.dll" />
</project>
person Sagar Kapadia    schedule 29.04.2019