前幾節已完成狀態機設計器的建模、驗證、程式碼生成,但皆在實驗性偵錯專案中執行。若要將設計器部署至僅安裝 Visual Studio (未安裝 SDK) 的機器,必須製作安裝程式。本節示範使用 VS.NET 內建的 Domain Specific Language Setup 專案 (基於 WiX) 產出安裝檔。

專案建立後會自動參考 Dsl 與 DslPackage 專案,並依據其中繼資料產生 InstallerDefinition.dslsetup:
<installerDefinition xmlns="https://schemas.microsoft.com/VisualStudio/2005/DslTools/InstallerDefinitionModel"
productUrl="InsertProductUrlHere"
defaultDirectoryName="LanguageSm"
productVersion="1.0.0"
requiresCSharp="true"
requiresVisualBasic="true"
productCode="326b807c-a6da-43ac-9d29-f75cf060622a"
upgradeCode="cc04b782-48c3-49c5-a60e-eda39258bfaa"
localeId="1033">
<dslPackage name="LanguageSm" project="DslPackage" assemblyPath="Company.LanguageSm.DslPackage.dll" registryRoot="SOFTWARE\Microsoft\VisualStudio\9.0">
<fileExtensions>
<fileExtension name="mydsl5" extension="mydsl5" descriptionKey="FileDescription" hasIcon="true" iconId="0"/>
</fileExtensions>
<supportingAssemblies>
<supportingAssembly name="Dsl" project="Dsl" assemblyPath="Company.LanguageSm.Dsl.dll"/>
</supportingAssemblies>
</dslPackage>
<licenseAgreement filePath="Files\EULA.rtf" isEmbedded="true" />
<supportingFiles>
<supportingFile name="Readme" filePath="Files\Readme.htm" installShortcut="true" shortcutIconPath="Resources\ReadmeShortcut.ico" openAfterInstall="true"/>
</supportingFiles>
<vsItemTemplates>
<vsItemTemplate localeId="1033" targetDirectories="CSharp" project="DslPackage" templatePath="CSharp\1033\LanguageSm.zip"/>
<vsItemTemplate localeId="1033" targetDirectories="VisualBasic" project="DslPackage" templatePath="VisualBasic\1033\LanguageSm.zip"/>
</vsItemTemplates>
<dslSchemas>
<dslSchema project="Dsl" filePath="GeneratedCode\LanguageSmSchema.xsd"/>
</dslSchemas>
</installerDefinition>
DslDefinition.dsl,此處可微調。localeId 依 VS 語言版本調整。專案下會產生多個 .wxs (WiX 原始檔) 與對應 .tt (T4 範本):
Strings_zh-cn.wxs 等)。注意: 除 Strings.wxs 外,其他 .wxs 皆由 T4 產生,請勿手動修改,重新轉換範本時會覆蓋。若需高度客製化,建議脫離 T4 直接編寫 WiX。

candle.exe、light.exe 編譯連結:candle.exe -dConfiguration=Debug -out obj\Debug\ -w0 -v Files.wxs Registry.wxs Main.wxs UI.wxs
light.exe -b ... -loc Strings.wxl -out bin\Debug\LanguageSm.msi -sa -w0 -v obj\Debug\Files.wixobj ...
bin\Debug 下可找到 LanguageSm.msi (或 .exe),雙擊安裝。


完成後,在 Visual Studio 新增專案項目時即可看到 LanguageSm 範本:

若直接將上述 MSI 部署至未安裝 VS SDK 的機器,設計器無法載入。必須取得 PLK 並嵌入封裝:
DslDefinition.dsl 根節點屬性) 產生 PLK。
DslPackage 專案 VSPackage.resx,新增字串資源:名稱 = 1,值 = 產生的 PLK GUID。
DslPackage\GeneratedCode\Package.tt,取消註解 [ProvideLoadKey] 屬性:/// [VSShell::ProvideLoadKey("Standard", Constants.ProductVersion, Constants.ProductName, Constants.CompanyName, 1)]此 MSI 即可在未安裝 SDK 的機器直接安裝使用。