none
OnceClick 如何发布混淆的程序 ? RRS feed

  • 问题

  • 1 想手动本地安装通过vs2005带的打包程序(混淆后的)

    2 OnceClick进行自动更新

     

    如何实现??/


    vc815
    2010年11月10日 3:25

答案

  • 首先,在项目文件夹(即项目文件 .csproj 或 .vbproj 所在的目录下)下建立一个名为 temp 的目录,该目录用于临时保存混淆结果文件。

    然后,启动Dotfuscator,为要混淆的DotNet项目新建一个Dotfuscator工程。
    (1)这里需要注意,选择要混淆的目标文件应该是在DotNet项目的 obj\release目录中的文件,而非 bin\release目录下的那个。
    (2)将Dotfuscator的输出路径指到刚才建立的temp目录下,使将来作完混淆的文件保存到该位置。
    (3)然后保存Dotfuscator工程到DotNet项目(.csproj 或 .vbproj)所在的目录下,命名为obfuscator。然后关闭 Dotfuscator。

    接下来用文本编辑器打开DotNet项目文件(扩展名为 .csproj 或 .vbproj)。在项目文件的尾部你会看到以下注释:
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
    Other similar extension points exist, see Microsoft.Common.targets.
    ……

    -->

    意思是:欲练此功,必先自Cut! ^_^ 开个玩笑,意思是若想修改编译进程,你可以添加任务到下面一个目标项中,并将其注释解除。存在其它类似的扩展结点,参见 Microsoft.Common.targets。

    用下面的xml代码段替换掉这部分注释,或者直接插入到注释上方,紧挨着注释的位置。

    <PropertyGroup>
    <XenocodeLocation>"C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.2\Dotfuscator.exe"</XenocodeLocation>
    <XenocodeProjectLocation>"$(ProjectDir)obfuscator.xml"</XenocodeProjectLocation>
    <XenocodeOutputLocation>"$(ProjectDir)temp"</XenocodeOutputLocation>
    <PostBuildEvent>
    </PostBuildEvent>
    </PropertyGroup>
    <Target Name="BeforeBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <CreateProperty Value="true">
    <Output TaskParameter="Value" PropertyName="Obfuscate" />
    </CreateProperty>
    </Target>
    <Target Name="AfterCompile" Condition=" '$(Obfuscate)' != '' ">
    <Exec Command="$(XenocodeLocation) $(XenocodeProjectLocation)" />
    <Copy SourceFiles="$(ProjectDir)temp\$(TargetFileName)" DestinationFiles="$(IntermediateOutputPath)$(TargetFileName)" />
    </Target>

    (代码段的缩进都没有了,没办法谁叫俺寄人篱下呢。)
    其中,
    第二行的<XenocodeLocation>标记代表Dotfuscator的启动路径。在应用前,应当改成自己机器上的实际路径。
    第三行<XenocodeProjectLocation>标记代表了前面Dotfuscator工程文件所在路径。
    第四行<XenocodeOutputLocation>标记代表了混淆后的输出位置。

    将上面Dotfuscator的路径改成自己机器上Dotfuscator的安装路径后,其它的应该不用改了。保存项目文件的更改。
    这样每当在发布项目时,项目中的敏感文件就被混淆,而且文件也将有正确 Hash Code,所以在“一键部署”(ClickOnce Deployment)时也能通过验证。

    注意 xml 文档的格式,在从网页复制到文本编辑器的过程中,可能会出现问题。应检查文档中尖括号还是不是半角的尖括号了,内容是否与看到的内容相符。空格还是不是半角的空格等等。
    还有,应当保证Dotfuscator项目在创建时(在UI界面下)能够成功完成混淆后才能保证其在命令行情况下也能顺利完成混淆。否则,有可能在dotNet项目的发布过程中出现Dotfuscator返回-1的错误。说明,混淆过程没能成功完成。

    (吐血推荐:http://topic.csdn.net/u/20100117/00/5395816c-2a16-45bb-9a14-b1fb5e367887.html
    2010年11月11日 2:26
    版主

全部回复

  • 你好

    用ClickOnce發佈完的程序...如果你選擇了 ONLINE/OFFLINE 模式的話 , 他應該會自己檢查更新的

    Please correct me if I mis-understood your questions


    Chi
    2010年11月10日 6:52
    版主
  • 1 想手动本地安装通过vs2005带的打包程序(混淆后的)

    2 OnceClick进行自动更新

     

    如何实现??/


    vc815
    我明白你的意思了。不过既然你不想通过ClickOnce安装,干脆也不要通过ClickOnce更新了。ClickOnce的可定制性很差,最好还是自己写一个更新模块。
    2010年11月10日 8:12
  • 你好

    用ClickOnce發佈完的程序...如果你選擇了 ONLINE/OFFLINE 模式的話 , 他應該會自己檢查更新的

    Please correct me if I mis-understood your questions


    Chi


    发布的程序没有混淆啊!!!

     


    vc815
    2010年11月10日 10:22
  • 1 想手动本地安装通过vs2005带的打包程序(混淆后的)

    2 OnceClick进行自动更新

     

    如何实现??/


    vc815
    我明白你的意思了。不过既然你不想通过ClickOnce安装,干脆也不要通过ClickOnce更新了。ClickOnce的可定制性很差,最好还是自己写一个更新模块。

    难道微软这个东西 实际应用这么费劲??

    这么简单的需求 微软就没有想到??没有解决方案?!


    vc815
    2010年11月10日 10:24
  • 首先,在项目文件夹(即项目文件 .csproj 或 .vbproj 所在的目录下)下建立一个名为 temp 的目录,该目录用于临时保存混淆结果文件。

    然后,启动Dotfuscator,为要混淆的DotNet项目新建一个Dotfuscator工程。
    (1)这里需要注意,选择要混淆的目标文件应该是在DotNet项目的 obj\release目录中的文件,而非 bin\release目录下的那个。
    (2)将Dotfuscator的输出路径指到刚才建立的temp目录下,使将来作完混淆的文件保存到该位置。
    (3)然后保存Dotfuscator工程到DotNet项目(.csproj 或 .vbproj)所在的目录下,命名为obfuscator。然后关闭 Dotfuscator。

    接下来用文本编辑器打开DotNet项目文件(扩展名为 .csproj 或 .vbproj)。在项目文件的尾部你会看到以下注释:
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
    Other similar extension points exist, see Microsoft.Common.targets.
    ……

    -->

    意思是:欲练此功,必先自Cut! ^_^ 开个玩笑,意思是若想修改编译进程,你可以添加任务到下面一个目标项中,并将其注释解除。存在其它类似的扩展结点,参见 Microsoft.Common.targets。

    用下面的xml代码段替换掉这部分注释,或者直接插入到注释上方,紧挨着注释的位置。

    <PropertyGroup>
    <XenocodeLocation>"C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.2\Dotfuscator.exe"</XenocodeLocation>
    <XenocodeProjectLocation>"$(ProjectDir)obfuscator.xml"</XenocodeProjectLocation>
    <XenocodeOutputLocation>"$(ProjectDir)temp"</XenocodeOutputLocation>
    <PostBuildEvent>
    </PostBuildEvent>
    </PropertyGroup>
    <Target Name="BeforeBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <CreateProperty Value="true">
    <Output TaskParameter="Value" PropertyName="Obfuscate" />
    </CreateProperty>
    </Target>
    <Target Name="AfterCompile" Condition=" '$(Obfuscate)' != '' ">
    <Exec Command="$(XenocodeLocation) $(XenocodeProjectLocation)" />
    <Copy SourceFiles="$(ProjectDir)temp\$(TargetFileName)" DestinationFiles="$(IntermediateOutputPath)$(TargetFileName)" />
    </Target>

    (代码段的缩进都没有了,没办法谁叫俺寄人篱下呢。)
    其中,
    第二行的<XenocodeLocation>标记代表Dotfuscator的启动路径。在应用前,应当改成自己机器上的实际路径。
    第三行<XenocodeProjectLocation>标记代表了前面Dotfuscator工程文件所在路径。
    第四行<XenocodeOutputLocation>标记代表了混淆后的输出位置。

    将上面Dotfuscator的路径改成自己机器上Dotfuscator的安装路径后,其它的应该不用改了。保存项目文件的更改。
    这样每当在发布项目时,项目中的敏感文件就被混淆,而且文件也将有正确 Hash Code,所以在“一键部署”(ClickOnce Deployment)时也能通过验证。

    注意 xml 文档的格式,在从网页复制到文本编辑器的过程中,可能会出现问题。应检查文档中尖括号还是不是半角的尖括号了,内容是否与看到的内容相符。空格还是不是半角的空格等等。
    还有,应当保证Dotfuscator项目在创建时(在UI界面下)能够成功完成混淆后才能保证其在命令行情况下也能顺利完成混淆。否则,有可能在dotNet项目的发布过程中出现Dotfuscator返回-1的错误。说明,混淆过程没能成功完成。

    (吐血推荐:http://topic.csdn.net/u/20100117/00/5395816c-2a16-45bb-9a14-b1fb5e367887.html
    2010年11月11日 2:26
    版主
  • 1 想手动本地安装通过vs2005带的打包程序(混淆后的)

    2 OnceClick进行自动更新

     

    如何实现??/


    vc815
    我明白你的意思了。不过既然你不想通过ClickOnce安装,干脆也不要通过ClickOnce更新了。ClickOnce的可定制性很差,最好还是自己写一个更新模块。

    难道微软这个东西 实际应用这么费劲??

    这么简单的需求 微软就没有想到??没有解决方案?!


    vc815
    ClickOnce 就是这么难用.....我现在后悔都来不及了
    2010年11月15日 13:17