<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Visual Studio DSL 入門 14---用Wix制作安裝程序

          我們到現在為止已經對Vs.net  dsl的基礎知識進行了介紹,并且一步一步的完成了我們的狀態機設計器的設計,在上一節結合T4模板生成了代碼.但是我們一直還是在調試的項目中來做的,怎么能夠讓我們做的這個狀態機設計器能夠提供給其它人使用呢,在這一節,我們就來做一個安裝程序,這樣在只安裝了VS.NET的機器上,不用安裝SDK就可以使用我們的設計器了.
          VS.NET DSL專門提供了針對DSL的安裝項目,我們直接基于這個項目來制作我們的安裝程序:
          1.首先,向我們的解決方案中添加一個Dsl 安裝項目,從項目類型中選擇Extensibility—Domain Specific Language Setup:
             2010-3-13 12-16-44

          2. 我們可以看到在生成的項目中, 還是由很多tt文件, 其實dsl的安裝是基于開源項目wix,不過在一般情況下,我們不需要手動去修改wix文件,不過如果一旦有特殊的需求,現有的這種機制是很難滿足的. 我們來介紹一下這種安裝機制:
             當我們向這個解決方案中添加DSL setup項目時,它會自動的尋找Dsl項目和DslPackage項目,并自動添加對這兩個項目的引用,然后根據這兩個項目中生成自己的元數據文件InstallerDefinition.dslsetup,我們來看一下這個文件:

      隱藏行號 復制代碼
      1. <installerDefinition xmlns="http://schemas.microsoft.com/VisualStudio/2005/DslTools/InstallerDefinitionModel" 
      2. productUrl="InsertProductUrlHere"
      3. defaultDirectoryName="LanguageSm"
      4. productVersion="1.0.0"
      5. requiresCSharp="true"
      6. requiresVisualBasic="true"
      7. productCode="326b807c-a6da-43ac-9d29-f75cf060622a"
      8. upgradeCode="cc04b782-48c3-49c5-a60e-eda39258bfaa"
      9. localeId="1033">
      10.     <dslPackage name="LanguageSm" project="DslPackage" assemblyPath="Company.LanguageSm.DslPackage.dll" registryRoot="SOFTWARE\Microsoft\VisualStudio\9.0">
      11.         <fileExtensions>
      12.             <fileExtension name="mydsl5" extension="mydsl5" descriptionKey="FileDescription" hasIcon="true" iconId="0"/>
      13.         </fileExtensions>
      14.         <supportingAssemblies>
      15.             <supportingAssembly name="Dsl" project="Dsl" assemblyPath="Company.LanguageSm.Dsl.dll"/>
      16.         </supportingAssemblies>
      17.     </dslPackage>
      18.     <licenseAgreement filePath="Files\EULA.rtf" isEmbedded="true" />
      19.     <supportingFiles>
      20.         <supportingFile name="Readme" filePath="Files\Readme.htm" installShortcut="true" shortcutIconPath="Resources\ReadmeShortcut.ico" openAfterInstall="true" />
      21.     </supportingFiles>
      22.     <vsItemTemplates>
      23.         <vsItemTemplate localeId="1033" targetDirectories="CSharp" project="DslPackage" templatePath="CSharp\1033\LanguageSm.zip"/>
      24.         <vsItemTemplate localeId="1033" targetDirectories="VisualBasic" project="DslPackage" templatePath="VisualBasic\1033\LanguageSm.zip"/>
      25.     </vsItemTemplates>
      26.     <dslSchemas>
      27.         <dslSchema project="Dsl" filePath="GeneratedCode\LanguageSmSchema.xsd"/>
      28.     </dslSchemas>
      29. </installerDefinition>

               (1).根結點installerDefinition下面是全局的定義,包括產品URL,目錄名稱,版本,是否在安裝需要vs.net安裝c#或者是BisualBasic等,在這里我們注意需要把requireVisualBasic設置為false.
               (2).dslPackge結點是對我們的dsl的一些注冊信息,這些信息都來自于我們的DslDefinition.dsl文件,不過我們這里可以對這些信息進行一些修改.
               (3).licenseAgreement  許可協議文件,這會在安裝過程中顯示出來.
               (4).supportingFiles, 需要復制到安裝目錄的文件列表
               (5).vsItemTemplates   項目項模板,是在項目中新增項的時候的,而不是說我們生成代碼的tt模板,也不是說新增項目的模板 , localeId是區域id,你可以根據你的vs.net語言版本改成2052
            
          下面再來看一下生成的其它幾個文件:
           2010-3-14 10-51-48

           Main.wxs       這是wix的主文件,控制整個安裝流程,包括對以下幾個部分的引用.
           Files.wxs       需要在安裝目錄創建的目錄結構和文件  包括dll和附屬文件
           Registry.wxs    注冊項信息,需要寫入注冊表的項
           UI.wxs          安裝界面
           string.wxs     被其它部分使用的語言的鍵值對,如果需要多語言支持,可以再添加對應語言的文件,比如string_zh-cn.wxs
           
           除了string.wxs文件,其它的幾個文件都是由tt文件生成的,不要手動去修改,即使修改了重新轉換模板時也會被覆蓋掉.
           3.我們暫時不需要做一些高級功能,現在先重新生成模板,然后編譯整個安裝項目:

      隱藏行號 復制代碼
      1.    D:\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Tools\Wix\candle.exe -dConfiguration=Debug -out obj\Debug\ -w0 -v Files.wxs Registry.wxs Main.wxs UI.wxs 
      2.    D:\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Tools\Wix\light.exe -b F:\NET\Projects\LanguageSm\LanguageSmSetup -loc Strings.wxl -out bin\Debug\LanguageSm.msi -sa -w0 -v obj\Debug\Files.wixobj obj\Debug\Registry.wixobj obj\Debug\Main.wixobj obj\Debug\UI.wixobj  


          可以看到其實是調用了sdk中附帶的wix的candle命令來生成. 編譯完成后,在setup項目下的debug目錄下面,可以找到生成的exe文件,我們點擊安裝:

          2010-3-14 11-38-25 
          接下來就是許可協議rtf文件的內容,同意后點下一步:
          2010-3-14 11-38-48
          這一步選擇我們的安裝目錄:
          2010-3-14 11-39-09 
          選擇完目錄后,直接下一步,直接到完成安裝,我們新建一個類庫項目,添加項時就會看到我們的LanguageSm:
          2010-3-14 12-30-43

         添加后我們就可以和我們調試項目的時候一樣進行狀態機的設計了.不過生成代碼的功能暫時還沒有加進來.
          4.不過當你把這個生成的安裝文件給沒有安裝過Visual stuido.net SDK的機器安裝后,你會發現,沒有作用,要讓dsl能夠直接在vs.net上安裝,你還必須要有自己的PLK(Package Load Key).
            (1)登陸vsx的網站http://msdn.microsoft.com/zh-cn/vsx/cc655795(en-us).aspx,左下角的就是plk的注冊信息,這些信息來源于你的DslDefinition.dsl的根結點的屬性:
         2010-3-14 12-46-39

            (2)填寫完這些信息完,點擊生成PLK,會生成一串的字母.然后打開DslPackage項目下面的VSPackage.resx文件,添加一個鍵為1的字符串資源,值就是生成的PLK GUID.
        2010-3-14 13-17-35
            (3)打開DslPackage項目GeneratedCode文件夾下面的Package.tt文件,將下面這句用來加載PLK的屬性標記的注釋去掉:

      隱藏行號 復制代碼
      1. /// [VSShell::ProvideLoadKey("Standard", Constants.ProductVersion, Constants.ProductName, Constants.CompanyName, 1)]

             (4)保存文件,重新轉換模板,再編譯dslsetup項目生成exe文件,這次就可以直接在未安裝sdk的機器上安裝使用了.

         5. 即使你可能覺得Dsl setup安裝項目還是很強大的,不過我還是需要說明以下幾點:
             (1)使用wix結合t4制作dsl安裝項目,雖然簡單,但是有失靈活性,如果你想擴展在使用現有的這種方式會有些麻煩除非你脫離開T4,就直接使用wix來完成.
             (2)使用wix,就是把注冊表操作,復制文件操作,多語言處理,安裝界面和流程處理等通過它特有的xml和擴展機制來實現,你完全可以不用這種機制,不用dsl setup項目,而使用自己的安裝方式.  比如直接新建普通的安裝項目或者是使用installshiled.
             (3)很高興的看到,在vs 2010中的關于dsl的安裝已經不使用wix了,而是通過新的擴展管理器來加載.

       
      代碼下載

       

      參考資源
            1. Visual Stuido DSL 工具特定領域開發指南
            2. DSL Tools Lab     http://code.msdn.microsoft.com/DSLToolsLab  系列教程  [本系列的入門案例的主要參考]

      作者:孤獨俠客似水流年
      出處:http://lonely7345.cnblogs.com/
      本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

      posted @ 2010-03-16 00:01  孤獨俠客  閱讀(3524)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 国产男女猛烈无遮挡免费视频| 18禁在线一区二区三区| 亚洲а∨精品天堂在线| 国产成人高清亚洲综合| 精品人妻午夜一区二区三区四区| 亚洲天堂一区二区三区四区| 亚洲国产成人AⅤ毛片奶水| 东乡| 色综合一本到久久亚洲91| 人妻被猛烈进入中文字幕| 网友自拍视频一区二区三区| 亚洲av日韩av一区久久| 国产精品爆乳奶水无码视频免费 | 国产日产免费高清欧美一区| 狠狠色狠狠色综合日日不卡| 国产精品福利自产拍在线观看| 亚洲av无码精品蜜桃| h动态图男女啪啪27报gif| 老鸭窝在钱视频| 成人中文在线| 国内自拍视频一区二区三区 | 人妻护士在线波多野结衣| 成人区精品一区二区不卡| 亚洲精品久荜中文字幕| 在线 欧美 中文 亚洲 精品| 韩国精品福利视频一区二区| 日韩欧美在线综合网另类| 亚洲精品中文字幕码专区| 国产av无码专区亚洲av软件| 久爱无码精品免费视频在线观看| 男女激情一区二区三区| 亚洲精品第一页中文字幕| 久久久久免费看黄a片app| 国产一区二区精品偷系列| 亚洲人妻系列中文字幕| 亚洲国产成人综合精品| www国产精品内射熟女| 精品国产AⅤ无码一区二区| 漂亮的保姆hd完整版免费韩国| 日韩精品国产另类专区| 亚洲欧美另类久久久精品播放的 |