Laden...

dotfuscator und Setup-Projekte

Erstellt von d.gierse vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.481 Views
D
d.gierse Themenstarter:in
115 Beiträge seit 2006
vor 13 Jahren
dotfuscator und Setup-Projekte

Hallo,

ich habe eine Projektmappe mit einem Setup-Projekt, der mir einen Installer für meine Windows-Anwendung erstellt. Dafür habe ich das im Visual Studio 2008 mitgelieferte Template für Setup-Projekte verwendet
Nun möchte ich (immernoch im VS 2008) meine Anwendung mit dotfuscator schützen. wie kann ich dotfuscator auf das Setup-Projekt anwenden?

Gruß Dominik

3.971 Beiträge seit 2006
vor 13 Jahren

Such mal nach Post build events

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

H
103 Beiträge seit 2010
vor 13 Jahren

Hey,
ich klinke mich nochma in das Thema ein, da das exakt meine Frage ist.
Suche nach Post Build Events bringt keine Lösung und ich finde einfach kein Tutorial, dass den genauen Prozess beschreibt um den Dotfuscator in das Setup Projekt zu integrieren.

Kennt jemand eine gute Quelle dazu oder kann es verständlich beschreiben?

PHP Tutorials zum PHP lernen

3.971 Beiträge seit 2006
vor 13 Jahren

Hallo Hirnmaster,

Suche nach Post Build Events bringt keine Lösung

Und ob sie das tut. Beim Suchen Gehirn anschalten. Beispiel How to: Specify Build Events (C#)

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

3.825 Beiträge seit 2006
vor 13 Jahren

Ich rufe Build, DotFuscator und dann Setup-Build in einer Batchdatei auf.

echo.
echo Building Project Quasar-3 Version
echo.
"D:\Programme\Microsoft Visual Studio 9.0\Common7\IDE\devenv" D:\Net\Quasar3\Quasar3.sln /Build Version
echo.
echo Dotfuscating Version
echo.
"D:\Programme\Microsoft Visual Studio 9.0\Application\PreEmptive Solutions\Dotfuscator Community Edition\Dotfuscator.exe" F:\Ver30\Dotfuscator\Version_Dotfuscator.xml
echo.
echo Setup-Datei Version erzeugen
echo.
"D:\Programme\Microsoft Visual Studio 9.0\Common7\IDE\devenv" D:\NET\Setup_Version_Web\Setup_Quasar3.sln /Build Release

Man muss im Dotfuscator leider mehrmals klicken damit er läuft. Eine Instanz des Visual Studios muss laufen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

H
103 Beiträge seit 2010
vor 13 Jahren

Hey Bernd, kannst du kurz erklären, was die einzelnen Zeilen genau machen oder einen Link zu einer entsprechenden Quelle posten? Ich habe bisher alles mit F6 erstellt und kenn mich mit der Commandline und den Befehlen gar nicht aus...

Hinweis vor 13 Jahren

Wenn du dich mit Batchprogrammierung nicht auskennst, dann such dir ein kleines tutorial. Die hier verwendeten befehle sind die absolut simpelsten.

Des weiteren kannst du die aufrufsyntax nicht nur online nachlesen sondern auch meistens durch eine help-parameter direkt von der exe erfahren.

PHP Tutorials zum PHP lernen

H
103 Beiträge seit 2010
vor 13 Jahren

War wirklich etwas kurzsichtig von mir gedacht, sry.

Interessant wäre noch zu wissen, was jetzt genau in der
"F:\Ver30\Dotfuscator\Version_Dotfuscator.xml"
Datei drin steht.

Ich bin auch über ein anderes tut gestoplert: http://blogs.freshlogicstudios.com/Posts/View.aspx?Id=ce807c96-33bb-43a2-8ebe-78ff0b993c66
das allerdings nicht funktioniert hat.

Was mich an Bernd's Script auch etwas verwirrt ist die Tatsache, dass hier zuerst eine komplette Solution gebuildet wird und dann das Setup in einem anderen Projekt ausgeführt wird. Bei mir liegt das Setup als eigens Projekt in der Solution der Hauptapplikation mit drin.

Achja, und das hier

Man muss im Dotfuscator leider mehrmals klicken damit er läuft.

check ich nich so ganz.. wo muss du was klicken? Das läuft doch als Skript, oder?

PHP Tutorials zum PHP lernen

3.825 Beiträge seit 2006
vor 13 Jahren

Hallo Hirnhamster,

die F:\Ver30\Dotfuscator\Version_Dotfuscator.xml erzeugst Du indem Du Dotfuscator aufrufst und alle Felder ausfüllt. Beim Speichern wird dann die XML-Datei erstellt. Was da genau drinnen steht weiss ich nicht.

ich habe ein Projekt für die Anwendung und ein zweites Projekt fürs Setup.

Die Kommandozeilen-Optionen erhältst Du in der Regel wenn Du das Programm mit dem Parameter /? aufrufst.

Im Dotfuscator muss ich nach dem Start auf "Go" (sonn Pfeil) klicken, wenn er fertig ist dann auf den Schließen-Button im Statistikfenster und dann muss ich es beenden.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

H
103 Beiträge seit 2010
vor 13 Jahren

Hey,
nach längerer Zeit mal wieder eine Rückmeldung von mir.

Das "automatische" obfuskieren nach dem Erstellen klappt jetzt mit einem PostBuildEvent, das so aussieht:

"C:\Program Files\Microsoft Visual Studio 9.0\Application\PreEmptive Solutions\Dotfuscator Community Edition\dotfuscator.exe" /p=SourceDirectory="C:\Users\Hirnhamster\Documents\Visual Studio 2008\Projects\ArticleWizard\ArticleSpinner\bin\x86\Release",SourceFile="Article Wizard.exe" "C:\Users\Hirnhamster\Documents\dotconf.xml"

Also allgemein:

"Pfad zum Dotfuscator" \p=Variable1="Ausgabepfad der .exe",Variable2="Name der .exe" "Pfad zum config file"

Das Config File hat den Inhalt

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.1.dtd">
<dotfuscator version="2.1">
  <propertylist>
      <property name="SourceDirectory" value="." />
      <property name="SourceFile" value="." />
   </propertylist>
  <input>
    <asmlist>
      <inputassembly>
        <file dir="${SourceDirectory}" name="${SourceFile}" />
      </inputassembly>
    </asmlist>
  </input>
  <output>
    <file dir="${SourceDirectory}" name="${SourceFile}" />
  </output>
  <renaming>
    <mapping>
      <mapoutput overwrite="false">
        <file dir="${configdir}\Dotfuscated" name="Map.xml" />
      </mapoutput>
    </mapping>
  </renaming>
</dotfuscator>

Eine Beschreibung der Werte im File gibt in dem .pdf Manual zur Dotfuskator Community Edition im Installationsodner des Dotfuskators unter docs/userguide.pdf

Ich hoffe mal das hilft später mal anderen, die das gleiche Problem haben und nen funktionierenden Beispielcode suchen.

Allerdings habe ich jetzt das Problem, dass ich die Anwendung nicht mehr starten kann. Bekomme nach dem Start direkt eine "{Anwendung} funktioniert nicht mehr" Fehlermeldung. Das gleiche passiert übrigens auch, wenn ich "normal" obfuskiere (ohne PostBuilt). Die ausgelöste inner Exception lautet:

Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass ArticleSpinner.Properties.Resources.resources beim Kompilieren richtig in die Assembly Article Wizard eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind.

Das Problem scheint ähnlich dem in diesem Thread [gelöst] Nach dem Dotfuscator funktioniert die EXE nicht mehr zu sein, aber ich verstehe nicht wie ich die Lösung auf mein Problem anwenden kann. Also welche Sachen/Dateien/Funktionen muss ich genau ausschließen!?

Beim Googlen bin ich unter anderem auf diesen Thread http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-internationalization/329/Help-with-Dotfuscator-and-localizable-app gestoßen, bei dem die "Lösung" folgendermaßen lautet:

The way to avoid this problem is to not rename any classes that inherit
from the Windows.Form class. The associated neutral resources will then
also not be renamed and so will match the resource names in the satellite
DLLs.

Das kommt für mich aber eigentlich nicht in Frage, da ich verschiedene Lizenzprüfungen in den Forms habe (und ich iwie nicht so ganz glauben kann, dass das nicht gehen soll?). Vllt. trifft das Problem auf mich aber auch nicht zu, kA. Jedenfalls hat es nichts gebracht, alle Forms bei der Obfuskierung auszuschließen.

Hoffe der Text ist nich zu lang.. aber wollte die Lösung zum obigen Problem noch Posten.

Grüße
Hamster

PHP Tutorials zum PHP lernen

S
322 Beiträge seit 2007
vor 13 Jahren

Hi,

du musst deine Resourcen vom Dotfuscieren ausschließen:
(nicht getestet!)


<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.1.dtd">
<dotfuscator version="2.1">
  <propertylist>
      <property name="SourceDirectory" value="." />
      <property name="SourceFile" value="." />
   </propertylist>
  <input>
    <asmlist>
      <inputassembly>
        <file dir="${SourceDirectory}" name="${SourceFile}" />
      </inputassembly>
    </asmlist>
  </input>
  <output>
    <file dir="${SourceDirectory}" name="${SourceFile}" />
  </output>
  <renaming>
    <excludelist>
      <type name="ArticleSpinner.Properties.Resources" />
    </excludelist>

    <mapping>
      <mapoutput overwrite="false">
        <file dir="${configdir}\Dotfuscated" name="Map.xml" />
      </mapoutput>
    </mapping>
  </renaming>
</dotfuscator>