├── .gitignore ├── README.md ├── answer_files ├── 81 │ └── Autounattend.xml └── vs │ └── AdminDeployment.xml ├── configs ├── ConEmu.reg ├── Sane.vssettings └── vsActionManager.DotSettings ├── iso ├── HideMenu.vsix └── SourceCodePro_FontsOnly-1.017.zip ├── net_dev.json ├── scripts ├── .gitignore ├── NoStupidHelp.bat ├── chef.bat ├── chocolatey.bat ├── chocopacks.bat ├── conemu.ps1 ├── dis-updates.ps1 ├── dpi.bat ├── fonts.ps1 ├── git.ps1 ├── hotfix-KB2842230.bat ├── openssh.ps1 ├── oracle-cert.cer ├── puppet-enterprise.bat ├── puppet.bat ├── reboot.bat ├── unpinall.bat ├── vagrant-ssh.bat ├── vm-guest-tools.bat ├── vs2013.ps1 └── win-updates.ps1 └── vagrantfile-net_dev.template /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /iso/* 3 | !/iso/README.md 4 | /output-vmware/ 5 | /output-vmware-iso/ 6 | /output-vmware-vmx/ 7 | /output-virtualbox/ 8 | /output-virtualbox-iso/ 9 | /output-virtualbox-ovf/ 10 | /*.box 11 | /packer_cache/ 12 | 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #.NET Development Packer Templates 2 | 3 | ## What even is this? 4 | 5 | This is a set of packer scripts to build an OKish .NET development environment that can be used with Vagrant or other provisioners. It is full of my opinions on how to set up a machine, but is a reasonable starting point for customization if you don't like my choices. It will do (broadly speaking): 6 | 7 | - Install Windows 8 | - Install Visual Studio 2013 9 | - Install Resharper 10 | - Install the Hide Main Menu plugin for Visual Studio 11 | - Install Source Code Pro fonts 12 | - Import some sensible defaults into Visual Studio (based on the IntelliJ keybindings) 13 | - Install ConEmu 14 | - Install Git for Windows 15 | - Install a sensible theme for ConEmu (based on a chocolatey package whose name I forget) 16 | - Install all the Windows updates 17 | - Package this all up for Vagrant, with a template Vagrant file that enables the GUI, and registers Resharper when you do `vagrant up` based on a `.reg` export of the relevant part of the tree stored in the the `RESHARPER_LICENSE_REGKEY` environment variable, and configures git with your username and email address. 18 | 19 | It builds from ISOs and downloaded images rather than using package managers - this is because I keep them on an external hard disk for when I travel and only have crappy hotel or conference internet. See below for the required source files and where you can get them from. 20 | 21 | *You likely want to be using Vagrant 1.6 or higher - since this now supports Windows natively.* 22 | 23 | ## Acknowledgements 24 | 25 | Most of the Windows installation process and the packer template were borrowed from here: `https://github.com/joefitzgerald/packer-windows` - without the availability of this project I likely wouldn't have even embarked on this. 26 | 27 | ## Required ISOs and Sources 28 | 29 | - `en_windows_8_1_pro_vl_x64_dvd_2971948.iso` - MSDN 30 | - `en_visual_studio_premium_2013_x86_dvd_3175275.iso` - MSDN 31 | - `VS2013.1.iso` - `http://go.microsoft.com/fwlink/?LinkId=386593` (for once an MSFT link without a login wall) 32 | - `HideMenu.vsix` - Included in repository (it's tiny) 33 | - `ReSharperSetup.8.2.0.2160.msi` - `http://download.jetbrains.com/resharper/ReSharperSetup.8.2.0.2160.msi` 34 | - `SourceCodePro_FontsOnly-1.017.zip` - Included in repository (again, tiny) 35 | - `ConEmuSetup.140422.exe` - `http://www.fosshub.com/download/ConEmuSetup.140422.exe` 36 | - `Git-1.9.2-preview20140411.exe` - `https://github.com/msysgit/msysgit/releases/download/Git-1.9.2-preview20140411/Git-1.9.2-preview20140411.exe` 37 | 38 | ## Additional bits that work if they're configured 39 | 40 | - If `user.name` and `user.email` are set locally, they'll be provisioned on Windows as part of the Vagrant provisioning (not the packing, so they'll be per user). 41 | 42 | - If there is a `RESHARPER_LICENSE_REGKEY` environment variable set pointing to a registry export of the Resharper license key, it will be imported as part of Vagrant provisioning. 43 | -------------------------------------------------------------------------------- /answer_files/81/Autounattend.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 1 11 | Primary 12 | 60000 13 | 14 | 15 | 16 | 17 | false 18 | NTFS 19 | C 20 | 1 21 | 1 22 | 23 | 24 | 25 | 0 26 | true 27 | 28 | OnError 29 | 30 | 31 | true 32 | Vagrant Administrator 33 | Vagrant Inc. 34 | 35 | XC9B7-NBPP2-83J2H-RHMBY-92BT4 36 | Never 37 | 38 | 39 | 40 | 41 | 42 | 0 43 | 1 44 | 45 | OnError 46 | false 47 | 48 | 49 | /IMAGE/NAME 50 | Windows 8.1 Pro 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | en-US 59 | 60 | en-US 61 | en-GB 62 | en-US 63 | en-US 64 | en-GB 65 | 66 | 67 | 68 | 69 | false 70 | 71 | 72 | 73 | 74 | 75 | 76 | vagrant 77 | true</PlainText> 78 | </AdministratorPassword> 79 | <LocalAccounts> 80 | <LocalAccount wcm:action="add"> 81 | <Password> 82 | <Value>vagrant</Value> 83 | <PlainText>true</PlainText> 84 | </Password> 85 | <Description>Vagrant User</Description> 86 | <DisplayName>vagrant</DisplayName> 87 | <Group>administrators</Group> 88 | <Name>vagrant</Name> 89 | </LocalAccount> 90 | </LocalAccounts> 91 | </UserAccounts> 92 | <OOBE> 93 | <HideEULAPage>true</HideEULAPage> 94 | <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> 95 | <NetworkLocation>Home</NetworkLocation> 96 | <ProtectYourPC>1</ProtectYourPC> 97 | </OOBE> 98 | <AutoLogon> 99 | <Password> 100 | <Value>vagrant</Value> 101 | <PlainText>true</PlainText> 102 | </Password> 103 | <Username>vagrant</Username> 104 | <Enabled>true</Enabled> 105 | </AutoLogon> 106 | <FirstLogonCommands> 107 | <SynchronousCommand wcm:action="add"> 108 | <CommandLine>cmd.exe /c powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"</CommandLine> 109 | <Description>Set Execution Policy 64 Bit</Description> 110 | <Order>1</Order> 111 | <RequiresUserInput>true</RequiresUserInput> 112 | </SynchronousCommand> 113 | <SynchronousCommand wcm:action="add"> 114 | <CommandLine>C:\Windows\SysWOW64\cmd.exe /c powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force"</CommandLine> 115 | <Description>Set Execution Policy 32 Bit</Description> 116 | <Order>2</Order> 117 | <RequiresUserInput>true</RequiresUserInput> 118 | </SynchronousCommand> 119 | <SynchronousCommand wcm:action="add"> 120 | <CommandLine>cmd.exe /c winrm quickconfig -q</CommandLine> 121 | <Description>winrm quickconfig -q</Description> 122 | <Order>3</Order> 123 | <RequiresUserInput>true</RequiresUserInput> 124 | </SynchronousCommand> 125 | <SynchronousCommand wcm:action="add"> 126 | <CommandLine>cmd.exe /c winrm quickconfig -transport:http</CommandLine> 127 | <Description>winrm quickconfig -transport:http</Description> 128 | <Order>4</Order> 129 | <RequiresUserInput>true</RequiresUserInput> 130 | </SynchronousCommand> 131 | <SynchronousCommand wcm:action="add"> 132 | <CommandLine>cmd.exe /c winrm set winrm/config @{MaxTimeoutms="1800000"}</CommandLine> 133 | <Description>Win RM MaxTimoutms</Description> 134 | <Order>5</Order> 135 | <RequiresUserInput>true</RequiresUserInput> 136 | </SynchronousCommand> 137 | <SynchronousCommand wcm:action="add"> 138 | <CommandLine>cmd.exe /c winrm set winrm/config/winrs @{MaxMemoryPerShellMB="300"}</CommandLine> 139 | <Description>Win RM MaxMemoryPerShellMB</Description> 140 | <Order>6</Order> 141 | <RequiresUserInput>true</RequiresUserInput> 142 | </SynchronousCommand> 143 | <SynchronousCommand wcm:action="add"> 144 | <CommandLine>cmd.exe /c winrm set winrm/config/service @{AllowUnencrypted="true"}</CommandLine> 145 | <Description>Win RM AllowUnencrypted</Description> 146 | <Order>7</Order> 147 | <RequiresUserInput>true</RequiresUserInput> 148 | </SynchronousCommand> 149 | <SynchronousCommand wcm:action="add"> 150 | <CommandLine>cmd.exe /c winrm set winrm/config/service/auth @{Basic="true"}</CommandLine> 151 | <Description>Win RM auth Basic</Description> 152 | <Order>8</Order> 153 | <RequiresUserInput>true</RequiresUserInput> 154 | </SynchronousCommand> 155 | <SynchronousCommand wcm:action="add"> 156 | <CommandLine>cmd.exe /c winrm set winrm/config/client/auth @{Basic="true"}</CommandLine> 157 | <Description>Win RM client auth Basic</Description> 158 | <Order>9</Order> 159 | <RequiresUserInput>true</RequiresUserInput> 160 | </SynchronousCommand> 161 | <SynchronousCommand wcm:action="add"> 162 | <CommandLine>cmd.exe /c winrm set winrm/config/listener?Address=*+Transport=HTTP @{Port="5985"} </CommandLine> 163 | <Description>Win RM listener Address/Port</Description> 164 | <Order>10</Order> 165 | <RequiresUserInput>true</RequiresUserInput> 166 | </SynchronousCommand> 167 | <SynchronousCommand wcm:action="add"> 168 | <CommandLine>cmd.exe /c netsh advfirewall firewall set rule group="remote administration" new enable=yes </CommandLine> 169 | <Description>Win RM adv firewall enable</Description> 170 | <Order>11</Order> 171 | <RequiresUserInput>true</RequiresUserInput> 172 | </SynchronousCommand> 173 | <SynchronousCommand wcm:action="add"> 174 | <CommandLine>cmd.exe /c netsh firewall add portopening TCP 5985 "Port 5985" </CommandLine> 175 | <Description>Win RM port open</Description> 176 | <Order>12</Order> 177 | <RequiresUserInput>true</RequiresUserInput> 178 | </SynchronousCommand> 179 | <SynchronousCommand wcm:action="add"> 180 | <CommandLine>cmd.exe /c net stop winrm </CommandLine> 181 | <Description>Stop Win RM Service </Description> 182 | <Order>13</Order> 183 | <RequiresUserInput>true</RequiresUserInput> 184 | </SynchronousCommand> 185 | <SynchronousCommand wcm:action="add"> 186 | <CommandLine>cmd.exe /c sc config winrm start= auto</CommandLine> 187 | <Description>Win RM Autostart</Description> 188 | <Order>14</Order> 189 | <RequiresUserInput>true</RequiresUserInput> 190 | </SynchronousCommand> 191 | <SynchronousCommand wcm:action="add"> 192 | <CommandLine>cmd.exe /c net start winrm</CommandLine> 193 | <Description>Start Win RM Service</Description> 194 | <Order>15</Order> 195 | <RequiresUserInput>true</RequiresUserInput> 196 | </SynchronousCommand> 197 | <SynchronousCommand wcm:action="add"> 198 | <CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ /v HideFileExt /t REG_DWORD /d 0 /f</CommandLine> 199 | <Order>16</Order> 200 | <Description>Show file extensions in Explorer</Description> 201 | </SynchronousCommand> 202 | <SynchronousCommand wcm:action="add"> 203 | <CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f</CommandLine> 204 | <Order>17</Order> 205 | <Description>Enable QuickEdit mode</Description> 206 | </SynchronousCommand> 207 | <SynchronousCommand wcm:action="add"> 208 | <CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ /v Start_ShowRun /t REG_DWORD /d 1 /f</CommandLine> 209 | <Order>18</Order> 210 | <Description>Show Run command in Start Menu</Description> 211 | </SynchronousCommand> 212 | <SynchronousCommand wcm:action="add"> 213 | <CommandLine>%SystemRoot%\System32\reg.exe ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ /v StartMenuAdminTools /t REG_DWORD /d 1 /f</CommandLine> 214 | <Order>19</Order> 215 | <Description>Show Administrative Tools in Start Menu</Description> 216 | </SynchronousCommand> 217 | <SynchronousCommand wcm:action="add"> 218 | <CommandLine>%SystemRoot%\System32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\Power\ /v HibernateFileSizePercent /t REG_DWORD /d 0 /f</CommandLine> 219 | <Order>20</Order> 220 | <Description>Zero Hibernation File</Description> 221 | </SynchronousCommand> 222 | <SynchronousCommand wcm:action="add"> 223 | <CommandLine>%SystemRoot%\System32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\Power\ /v HibernateEnabled /t REG_DWORD /d 0 /f</CommandLine> 224 | <Order>21</Order> 225 | <Description>Disable Hibernation Mode</Description> 226 | </SynchronousCommand> 227 | <SynchronousCommand wcm:action="add"> 228 | <CommandLine>cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File a:\dis-updates.ps1</CommandLine> 229 | <Description>Disable Windows Updates</Description> 230 | <Order>98</Order> 231 | <RequiresUserInput>true</RequiresUserInput> 232 | </SynchronousCommand> 233 | <SynchronousCommand wcm:action="add"> 234 | <CommandLine>cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File a:\openssh.ps1</CommandLine> 235 | <Description>Install OpenSSH</Description> 236 | <Order>99</Order> 237 | <RequiresUserInput>true</RequiresUserInput> 238 | </SynchronousCommand> 239 | <SynchronousCommand wcm:action="add"> 240 | <CommandLine>cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File a:\win-updates.ps1</CommandLine> 241 | <Description>Install Windows Updates</Description> 242 | <Order>100</Order> 243 | <RequiresUserInput>true</RequiresUserInput> 244 | </SynchronousCommand> 245 | </FirstLogonCommands> 246 | <ShowWindowsLive>false</ShowWindowsLive> 247 | </component> 248 | </settings> 249 | <settings pass="specialize"> 250 | <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> 251 | <OEMInformation> 252 | <HelpCustomized>false</HelpCustomized> 253 | </OEMInformation> 254 | <!-- Rename computer here. --> 255 | <ComputerName>net-dev-vm</ComputerName> 256 | <TimeZone>GMT Standard Time</TimeZone> 257 | <RegisteredOwner/> 258 | </component> 259 | <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> 260 | <SkipAutoActivation>true</SkipAutoActivation> 261 | </component> 262 | </settings> 263 | <cpi:offlineImage xmlns:cpi="urn:schemas-microsoft-com:cpi" cpi:source="catalog:d:/sources/install_windows 7 ENTERPRISE.clg"/> 264 | </unattend> 265 | -------------------------------------------------------------------------------- /answer_files/vs/AdminDeployment.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <AdminDeploymentCustomizations xmlns="http://schemas.microsoft.com/wix/2011/AdminDeployment"> 3 | <BundleCustomizations TargetDir="default" NoWeb="yes"/> 4 | 5 | <SelectableItemCustomizations> 6 | <SelectableItemCustomization Id="Blend" Hidden="no" Selected="yes" /> 7 | <SelectableItemCustomization Id="LightSwitch" Hidden="no" Selected="no" /> 8 | <SelectableItemCustomization Id="VC_MFC_Libraries" Hidden="no" Selected="no" /> 9 | <SelectableItemCustomization Id="OfficeDeveloperTools" Hidden="no" Selected="no" /> 10 | <SelectableItemCustomization Id="SQL" Hidden="no" Selected="no" /> 11 | <SelectableItemCustomization Id="WebTools" Hidden="no" Selected="yes"/> 12 | <SelectableItemCustomization Id="SilverLight_Developer_Kit" Hidden="no" Selected="no" /> 13 | <SelectableItemCustomization Id="Win8SDK" Hidden="no" Selected="no" /> 14 | <SelectableItemCustomization Id="WindowsPhone80" Hidden="no" Selected="no" /> 15 | 16 | <SelectableItemCustomization Id="BlissHidden" Selected="yes" /> 17 | <SelectableItemCustomization Id="HelpHidden" Selected="yes" /> 18 | <SelectableItemCustomization Id="IntelliTraceHidden" Selected="yes" /> 19 | <SelectableItemCustomization Id="LocalDBHidden" Selected="yes" /> 20 | <SelectableItemCustomization Id="NetFX4Hidden" Selected="yes" /> 21 | <SelectableItemCustomization Id="NetFX45Hidden" Selected="yes" /> 22 | <SelectableItemCustomization Id="PortableDTPHidden" Selected="yes" /> 23 | <SelectableItemCustomization Id="PreEmptiveDotfuscatorHidden" Selected="yes" /> 24 | <SelectableItemCustomization Id="PreEmptiveAnalyticsHidden" Selected="yes" /> 25 | <SelectableItemCustomization Id="ProfilerHidden" Selected="yes" /> 26 | <SelectableItemCustomization Id="ReportingHidden" Selected="yes" /> 27 | <SelectableItemCustomization Id="SDKTools3Hidden" Selected="yes" /> 28 | <SelectableItemCustomization Id="SDKTools4Hidden" Selected="yes" /> 29 | <SelectableItemCustomization Id="Silverlight5DRTHidden" Selected="yes" /> 30 | <SelectableItemCustomization Id="SQLCEHidden" Selected="yes" /> 31 | <SelectableItemCustomization Id="SQLCLRTypesHidden" Selected="yes" /> 32 | <SelectableItemCustomization Id="SQLDACHidden" Selected="yes" /> 33 | <SelectableItemCustomization Id="SQLDOMHidden" Selected="yes" /> 34 | <SelectableItemCustomization Id="SQLSharedManagementObjectsHidden" Selected="yes" /> 35 | <SelectableItemCustomization Id="StoryboardingHidden" Selected="yes" /> 36 | <SelectableItemCustomization Id="TSQLHidden" Selected="yes" /> 37 | <SelectableItemCustomization Id="VCCompilerHidden" Selected="yes" /> 38 | <SelectableItemCustomization Id="VCCoreHidden" Selected="yes" /> 39 | <SelectableItemCustomization Id="VCDebugHidden" Selected="yes" /> 40 | <SelectableItemCustomization Id="VCDesigntimeHidden" Selected="yes" /> 41 | <SelectableItemCustomization Id="VCExtendedHidden" Selected="yes" /> 42 | <SelectableItemCustomization Id="WinJSHidden" Selected="yes" /> 43 | <SelectableItemCustomization Id="WinSDKHidden" Selected="yes" /> 44 | </SelectableItemCustomizations> 45 | 46 | </AdminDeploymentCustomizations> -------------------------------------------------------------------------------- /configs/ConEmu.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | [HKEY_CURRENT_USER\Software\ConEmu] 4 | "ConEmuStartShortcut64Installed"=dword:00000001 5 | "UninstallShortcutInstalled"=dword:00000001 6 | "ConEmuDesktopShortcut64Installed"=dword:00000001 7 | "ConEmuDesktopShortcutFolder"=dword:00000001 8 | 9 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla] 10 | "ColorTable00"=dword:00423607 11 | "ColorTable01"=dword:002f32dc 12 | "ColorTable02"=dword:00009985 13 | "ColorTable03"=dword:000089b5 14 | "ColorTable04"=dword:00d28b26 15 | "ColorTable05"=dword:008236d3 16 | "ColorTable06"=dword:0098a12a 17 | "ColorTable07"=dword:00d5e8ee 18 | "ColorTable08"=dword:00362b00 19 | "ColorTable09"=dword:00164bcb 20 | "ColorTable10"=dword:00756e58 21 | "ColorTable11"=dword:00837b65 22 | "ColorTable12"=dword:00969483 23 | "ColorTable13"=dword:00c4716c 24 | "ColorTable14"=dword:00a1a193 25 | "ColorTable15"=dword:00e3f6fd 26 | "ColorTable16"=dword:00423607 27 | "ColorTable17"=dword:002f32dc 28 | "ColorTable18"=dword:00009985 29 | "ColorTable19"=dword:000089b5 30 | "ColorTable20"=dword:00d28b26 31 | "ColorTable21"=dword:008236d3 32 | "ColorTable22"=dword:0098a12a 33 | "ColorTable23"=dword:00d5e8ee 34 | "ColorTable24"=dword:00362b00 35 | "ColorTable25"=dword:00164bcb 36 | "ColorTable26"=dword:00756e58 37 | "ColorTable27"=dword:00837b65 38 | "ColorTable28"=dword:00969483 39 | "ColorTable29"=dword:00c4716c 40 | "ColorTable30"=dword:00a1a193 41 | "ColorTable31"=dword:00e3f6fd 42 | "ExtendColors"=hex:00 43 | "ExtendColorIdx"=hex:0e 44 | "OverrideExtendFonts"=hex:01 45 | "ExtendFonts"=hex:00 46 | "ExtendFontNormalIdx"=hex:01 47 | "ExtendFontBoldIdx"=hex:0c 48 | "ExtendFontItalicIdx"=hex:0d 49 | "OverrideCursor"=hex:01 50 | "CursorType"=hex:01 51 | "CursorColor"=hex:00 52 | "CursorBlink"=hex:01 53 | "CursorBlockInactive"=hex:01 54 | "TrueColorerSupport"=hex:01 55 | "FadeInactive"=hex:01 56 | "FadeInactiveLow"=hex:00 57 | "FadeInactiveHigh"=hex:d0 58 | "ConVisible"=hex:00 59 | "ConInMode"=dword:ffffffff 60 | "UseInjects"=hex:01 61 | "CmdLine"="" 62 | "Multi"=hex:01 63 | "Multi.Modifier"=dword:0000005b 64 | "Multi.NewConsole"=dword:00001154 65 | "Multi.Next"=dword:80808000 66 | "Multi.Recreate"=dword:00105bc0 67 | "Multi.Close"=dword:00001173 68 | "Multi.CmdKey"=dword:80808000 69 | "Multi.NewConfirm"=hex:01 70 | "Multi.Buffer"=hex:41 71 | "Multi.UseArrows"=hex:00 72 | "Multi.UseNumbers"=hex:00 73 | "Multi.UseWinTab"=hex:00 74 | "Multi.AutoCreate"=hex:00 75 | "Multi.LeaveOnClose"=hex:00 76 | "Multi.Iterate"=hex:01 77 | "MinimizeRestore"=dword:001011c0 78 | "KeyboardHooks"=hex:01 79 | "FontName"="Consolas" 80 | "FontName2"="Source Code Pro Semibold" 81 | "FontAutoSize"=hex:00 82 | "FontSize"=dword:0000001c 83 | "FontSizeX"=dword:00000000 84 | "FontSizeX2"=dword:00000000 85 | "FontSizeX3"=dword:00000000 86 | "FontCharSet"=hex:00 87 | "Anti-aliasing"=dword:00000004 88 | "FontBold"=hex:00 89 | "FontItalic"=hex:00 90 | "Monospace"=hex:02 91 | "BackGround Image show"=hex:00 92 | "BackGround Image"="c:\\back.bmp" 93 | "bgImageDarker"=hex:ff 94 | "bgImageColors"=dword:ffffffff 95 | "bgOperation"=hex:00 96 | "bgPluginAllowed"=hex:01 97 | "AlphaValue"=hex:ff 98 | "UserScreenTransparent"=hex:00 99 | "WindowMode"=dword:00000520 100 | "HideCaption"=hex:00 101 | "HideCaptionAlways"=hex:01 102 | "HideCaptionAlwaysFrame"=hex:00 103 | "HideCaptionAlwaysDelay"=dword:000007d0 104 | "HideCaptionAlwaysDisappear"=dword:000007d0 105 | "DownShowHiddenMessage"=hex:00 106 | "ConsoleFontName"="Lucida Console" 107 | "ConsoleFontWidth"=dword:00000003 108 | "ConsoleFontHeight"=dword:00000005 109 | "DefaultBufferHeight"=dword:00001388 110 | "AutoBufferHeight"=hex:01 111 | "CmdOutputCP"=dword:00000000 112 | "ConsoleTextSelection"=hex:01 113 | "CTS.SelectBlock"=hex:01 114 | "CTS.VkBlock"=hex:a4 115 | "CTS.VkBlockStart"=dword:00000000 116 | "CTS.SelectText"=hex:01 117 | "CTS.VkText"=hex:00 118 | "CTS.VkTextStart"=dword:00000000 119 | "CTS.ActMode"=hex:02 120 | "CTS.VkAct"=hex:00 121 | "CTS.RBtnAction"=hex:03 122 | "CTS.MBtnAction"=hex:00 123 | "CTS.ColorIndex"=hex:e0 124 | "FarGotoEditor"=hex:01 125 | "FarGotoEditorVk"=hex:a2 126 | "FixFarBorders"=hex:00 127 | "FixFarBordersRanges"="2013-25C4;" 128 | "ExtendUCharMap"=hex:01 129 | "EnhanceGraphics"=hex:01 130 | "EnhanceButtons"=hex:00 131 | "PartBrush75"=hex:c8 132 | "PartBrush50"=hex:96 133 | "PartBrush25"=hex:5a 134 | "PartBrushBlack"=hex:20 135 | "RightClick opens context menu"=hex:02 136 | "RightClickMacro2"="" 137 | "AltEnter"=hex:00 138 | "AltSpace"=hex:00 139 | "SendAltTab"=hex:00 140 | "SendAltEsc"=hex:00 141 | "SendAltPrintScrn"=hex:00 142 | "SendPrintScrn"=hex:00 143 | "SendCtrlEsc"=hex:00 144 | "SendAltF9"=hex:00 145 | "Min2Tray"=hex:00 146 | "AlwaysShowTrayIcon"=hex:00 147 | "SafeFarClose"=hex:01 148 | "SafeFarCloseMacro"="" 149 | "FARuseASCIIsort"=hex:00 150 | "ShellNoZoneCheck"=hex:00 151 | "FixAltOnAltTab"=hex:00 152 | "DisableMouse"=hex:00 153 | "RSelectionFix"=hex:01 154 | "MouseSkipActivation"=hex:01 155 | "MouseSkipMoving"=hex:01 156 | "FarHourglass"=hex:01 157 | "FarHourglassDelay"=dword:000001f4 158 | "Dnd"=hex:01 159 | "DndLKey"=hex:00 160 | "DndRKey"=hex:a2 161 | "DndDrop"=hex:01 162 | "DefCopy"=hex:01 163 | "DragOverlay"=hex:01 164 | "DragShowIcons"=hex:01 165 | "DebugSteps"=hex:01 166 | "DragPanel"=hex:02 167 | "DragPanelBothEdges"=hex:00 168 | "KeyBarRClick"=hex:01 169 | "Tabs"=hex:01 170 | "TabSelf"=hex:01 171 | "TabLazy"=hex:00 172 | "TabRecent"=hex:00 173 | "TabsOnTaskBar"=hex:00 174 | "TabCloseMacro"="" 175 | "TabFontFace"="Consolas" 176 | "TabFontCharSet"=dword:00000000 177 | "TabFontHeight"=dword:0000000e 178 | "SaveAllEditors"="" 179 | "TabFrame"=hex:01 180 | "TabMargins"=hex:00,00,00,00,19,00,00,00,00,00,00,00,00,00,00,00 181 | "ToolbarAddSpace"=dword:00000000 182 | "TabConsole"="%s" 183 | "TabEditor"="<%c.%i>{%s}" 184 | "TabEditorModified"="<%c.%i>[%s] *" 185 | "TabViewer"="<%c.%i>[%s]" 186 | "TabLenMax"=dword:00000014 187 | "AdminTitleSuffix"=" (Admin)" 188 | "AdminShowShield"=hex:01 189 | "HideInactiveConsoleTabs"=hex:00 190 | "ShowFarWindows"=hex:01 191 | "TryToCenter"=hex:00 192 | "ShowScrollbar"=hex:02 193 | "IconID"=dword:00000001 194 | "ConWnd Width"=dword:00000069 195 | "ConWnd Height"=dword:00000034 196 | "16bit Height"=dword:00000000 197 | "ConWnd X"=dword:00000000 198 | "ConWnd Y"=dword:fffffffd 199 | "Cascaded"=hex:01 200 | "AutoSaveSizePos"=hex:00 201 | "MainTimerElapse"=dword:0000000a 202 | "MainTimerInactiveElapse"=dword:000003e8 203 | "AffinityMask"=dword:00000000 204 | "SkipFocusEvents"=hex:00 205 | "MonitorConsoleLang"=hex:03 206 | "DesktopMode"=hex:00 207 | "AlwaysOnTop"=hex:00 208 | "SleepInBackground"=hex:00 209 | "DisableFarFlashing"=hex:00 210 | "DisableAllFlashing"=hex:00 211 | "PanView.BackColor"=dword:30ffffff 212 | "PanView.PFrame"=dword:00000001 213 | "PanView.PFrameColor"=dword:28808080 214 | "PanView.SFrame"=dword:00000001 215 | "PanView.SFrameColor"=dword:07c0c0c0 216 | "PanView.Thumbs.ImgSize"=dword:00000060 217 | "PanView.Thumbs.SpaceX1"=dword:00000001 218 | "PanView.Thumbs.SpaceY1"=dword:00000001 219 | "PanView.Thumbs.SpaceX2"=dword:00000005 220 | "PanView.Thumbs.SpaceY2"=dword:00000014 221 | "PanView.Thumbs.LabelSpacing"=dword:00000002 222 | "PanView.Thumbs.LabelPadding"=dword:00000000 223 | "PanView.Thumbs.FontName"="Tahoma" 224 | "PanView.Thumbs.FontHeight"=dword:0000000e 225 | "PanView.Tiles.ImgSize"=dword:00000030 226 | "PanView.Tiles.SpaceX1"=dword:00000004 227 | "PanView.Tiles.SpaceY1"=dword:00000004 228 | "PanView.Tiles.SpaceX2"=dword:000000ac 229 | "PanView.Tiles.SpaceY2"=dword:00000004 230 | "PanView.Tiles.LabelSpacing"=dword:00000004 231 | "PanView.Tiles.LabelPadding"=dword:00000001 232 | "PanView.Tiles.FontName"="Tahoma" 233 | "PanView.Tiles.FontHeight"=dword:0000000e 234 | "PanView.LoadPreviews"=hex:03 235 | "PanView.LoadFolders"=hex:01 236 | "PanView.LoadTimeout"=dword:0000000f 237 | "PanView.MaxZoom"=dword:00000258 238 | "PanView.UsePicView2"=hex:01 239 | "PanView.RestoreOnStartup"=hex:00 240 | "Update.VerLocation"="" 241 | "Update.CheckOnStartup"=hex:01 242 | "Update.CheckHourly"=hex:00 243 | "Update.ConfirmDownload"=hex:00 244 | "Update.UseBuilds"=hex:02 245 | "Update.UseProxy"=hex:00 246 | "Update.Proxy"="" 247 | "Update.ProxyUser"="" 248 | "Update.ProxyPassword"="" 249 | "Update.DownloadSetup"=hex:00 250 | "Update.ExeCmdLine"="" 251 | "Update.ArcCmdLine"="" 252 | "Update.DownloadPath"="%TEMP%\\ConEmu" 253 | "Update.LeavePackages"=hex:00 254 | "Update.PostUpdateCmd"="echo Last successful update>ConEmuUpdate.info && date /t>>ConEmuUpdate.info && time /t>>ConEmuUpdate.info" 255 | "TextColorIdx"=hex:10 256 | "BackColorIdx"=hex:10 257 | "PopTextColorIdx"=hex:10 258 | "PopBackColorIdx"=hex:10 259 | "CursorTypeActive"=dword:000232c2 260 | "CursorTypeInactive"=dword:00823283 261 | "ClipboardDetectLineEnd"=hex:01 262 | "ClipboardBashMargin"=hex:00 263 | "ClipboardTrimTrailing"=hex:02 264 | "ClipboardEOL"=hex:00 265 | "ClipboardArrowStart"=hex:01 266 | "ClipboardAllLines"=hex:01 267 | "ClipboardFirstLine"=hex:01 268 | "ClipboardClickPromptPosition"=hex:02 269 | "ClipboardDeleteLeftWord"=hex:02 270 | "SetDefaultTerminal"=hex:00 271 | "SetDefaultTerminalStartup"=hex:00 272 | "DefaultTerminalNoInjects"=hex:00 273 | "DefaultTerminalConfirm"=hex:01 274 | "DefaultTerminalApps"="explorer.exe" 275 | "ProcessAnsi"=hex:01 276 | "UseClink"=hex:01 277 | "StartType"=hex:02 278 | "StartTasksFile"="" 279 | "StartTasksName"="{Development}" 280 | "StartFarFolders"=hex:00 281 | "StartFarEditors"=hex:00 282 | "StoreTaskbarkTasks"=hex:01 283 | "StoreTaskbarCommands"=hex:00 284 | "SingleInstance"=hex:01 285 | "Multi.ShowButtons"=hex:01 286 | "Multi.NumberInCaption"=hex:00 287 | "Multi.CloseConfirm"=hex:00 288 | "Multi.CloseEditViewConfirm"=hex:00 289 | "Multi.HideOnClose"=hex:01 290 | "Multi.MinByEsc"=hex:02 291 | "MapShiftEscToEsc"=hex:01 292 | "Multi.SplitWidth"=hex:04 293 | "Multi.SplitHeight"=hex:04 294 | "AlphaValueSeparate"=hex:00 295 | "AlphaValueInactive"=hex:ff 296 | "ColorKeyTransparent"=hex:00 297 | "ColorKeyValue"=dword:00010101 298 | "UseCurrentSizePos"=hex:01 299 | "QuakeStyle"=hex:00 300 | "QuakeAnimation"=dword:0000012c 301 | "HideChildCaption"=hex:01 302 | "FocusInChildWindows"=hex:01 303 | "ComSpec.Type"=hex:00 304 | "ComSpec.Bits"=hex:00 305 | "ComSpec.UpdateEnv"=hex:00 306 | "ComSpec.EnvAddPath"=hex:01 307 | "ComSpec.UncPaths"=hex:00 308 | "ComSpec.Path"="" 309 | "CTS.AutoCopy"=hex:01 310 | "CTS.EndOnTyping"=hex:00 311 | "CTS.EndOnKeyPress"=hex:00 312 | "CTS.Freeze"=hex:00 313 | "ClipboardConfirmEnter"=hex:00 314 | "ClipboardConfirmLonger"=dword:00000000 315 | "FarGotoEditorOpt"=hex:01 316 | "FarGotoEditorPath"="far.exe /e%1:%2 \"%3\"" 317 | "DropUseMenu"=hex:02 318 | "StatusBar.Show"=hex:01 319 | "StatusBar.Flags"=dword:00000000 320 | "StatusFontFace"="Source Code Pro Black" 321 | "StatusFontCharSet"=dword:00000000 322 | "StatusFontHeight"=dword:00000010 323 | "StatusBar.Color.Back"=dword:00a1a193 324 | "StatusBar.Color.Light"=dword:00303030 325 | "StatusBar.Color.Dark"=dword:00b0b0a4 326 | "StatusBar.Hide.VCon"=hex:00 327 | "StatusBar.Hide.CapsL"=hex:00 328 | "StatusBar.Hide.NumL"=hex:00 329 | "StatusBar.Hide.ScrL"=hex:00 330 | "StatusBar.Hide.Lang"=hex:01 331 | "StatusBar.Hide.WPos"=hex:01 332 | "StatusBar.Hide.WSize"=hex:01 333 | "StatusBar.Hide.WClient"=hex:01 334 | "StatusBar.Hide.WWork"=hex:01 335 | "StatusBar.Hide.Style"=hex:01 336 | "StatusBar.Hide.StyleEx"=hex:01 337 | "StatusBar.Hide.hFore"=hex:01 338 | "StatusBar.Hide.hFocus"=hex:01 339 | "StatusBar.Hide.ABuf"=hex:00 340 | "StatusBar.Hide.CPos"=hex:01 341 | "StatusBar.Hide.CSize"=hex:01 342 | "StatusBar.Hide.BSize"=hex:00 343 | "StatusBar.Hide.CurX"=hex:00 344 | "StatusBar.Hide.CurY"=hex:01 345 | "StatusBar.Hide.CurS"=hex:01 346 | "StatusBar.Hide.CurI"=hex:01 347 | "StatusBar.Hide.ConEmuPID"=hex:01 348 | "StatusBar.Hide.ConEmuHWND"=hex:01 349 | "StatusBar.Hide.ConEmuView"=hex:01 350 | "StatusBar.Hide.Srv"=hex:00 351 | "StatusBar.Hide.SrvHWND"=hex:01 352 | "StatusBar.Hide.Transparency"=hex:01 353 | "StatusBar.Hide.New"=hex:00 354 | "StatusBar.Hide.Sync"=hex:00 355 | "StatusBar.Hide.Proc"=hex:00 356 | "StatusBar.Hide.Title"=hex:01 357 | "StatusBar.Hide.Resize"=hex:00 358 | "TabsLocation"=hex:00 359 | "TabDblClick"=dword:00000001 360 | "TaskBarOverlay"=hex:01 361 | "TabSkipWords"="Administrator:|Администратор:" 362 | "TabPanels"="<%c> %s" 363 | "CenterConsolePad"=dword:00000000 364 | "ScrollBarAppearDelay"=dword:00000064 365 | "ScrollBarDisappearDelay"=dword:000003e8 366 | "SnapToDesktopEdges"=hex:00 367 | "MinimizeOnLoseFocus"=hex:00 368 | "FindText"="full_name" 369 | "FindMatchCase"=hex:00 370 | "FindMatchWholeWords"=hex:00 371 | "FindTransparent"=hex:01 372 | "Multi.ArrowsModifier"=dword:0000005b 373 | "KeyMacroVersion"=hex:02 374 | "MinimizeRestore2"=dword:00000000 375 | "GlobalRestore"=dword:00000000 376 | "ForcedFullScreen"=dword:0000107a 377 | "SwitchGuiFocus"=dword:00000000 378 | "SetFocusGui"=dword:00000000 379 | "SetFocusChild"=dword:00000000 380 | "ChildSystemMenu"=dword:00000000 381 | "Multi.NewConsoleShift"=dword:0000114e 382 | "Multi.NewConsolePopup"=dword:80808000 383 | "Multi.NewWindow"=dword:0010114e 384 | "Multi.NewSplitV"=dword:0010114f 385 | "Multi.NewSplitH"=dword:00101145 386 | "Multi.NewAttach"=dword:80808000 387 | "Multi.NextShift"=dword:80808000 388 | "Multi.AltCon"=dword:00101141 389 | "Multi.Scroll"=dword:80808000 390 | "CloseTabKey"=dword:00001157 391 | "CloseGroupKey"=dword:00000000 392 | "TerminateProcessKey"=dword:80808000 393 | "DuplicateRootKey"=dword:00000000 394 | "CloseConEmuKey"=dword:00001273 395 | "Multi.Rename"=dword:00005d52 396 | "Multi.MoveLeft"=dword:00101121 397 | "Multi.MoveRight"=dword:00101122 398 | "Multi.ShowTabsList"=dword:00000000 399 | "Multi.ShowTabsList2"=dword:00005d7b 400 | "ClipboardVkAllLines"=dword:00001156 401 | "ClipboardVkFirstLine"=dword:80808000 402 | "DeleteWordToLeft"=dword:00001108 403 | "FindTextKey"=dword:00001146 404 | "ScreenshotKey"=dword:80808000 405 | "ScreenshotFullKey"=dword:80808000 406 | "ShowStatusBarKey"=dword:00005d53 407 | "ShowTabBarKey"=dword:00005d54 408 | "ShowCaptionKey"=dword:00005d43 409 | "AlwaysOnTopKey"=dword:00000000 410 | "Key.TabMenu"=dword:00101150 411 | "Key.TabMenu2"=dword:00001002 412 | "Key.TabPane1"=dword:00005d09 413 | "Key.TabPane2"=dword:00105d09 414 | "Key.Maximize"=dword:80808000 415 | "Key.FullScreen"=dword:8080807a 416 | "Key.SysMenu"=dword:00001220 417 | "Key.SysMenu2"=dword:00001102 418 | "Key.BufUp"=dword:00001126 419 | "Key.BufDn"=dword:00001128 420 | "Key.BufPgUp"=dword:00001121 421 | "Key.BufPgDn"=dword:00001122 422 | "Key.PicViewSlide"=dword:80808013 423 | "Key.PicViewSlower"=dword:808080bd 424 | "Key.PicViewFaster"=dword:808080bb 425 | "FontLargerKey"=dword:000011d0 426 | "FontSmallerKey"=dword:000011d1 427 | "PasteFileKey"=dword:00101146 428 | "PastePathKey"=dword:00101144 429 | "PasteCygwinKey"=dword:00005d2d 430 | "Key.JumpPrevMonitor"=dword:00105b25 431 | "Key.JumpNextMonitor"=dword:00105b27 432 | "KeyMacro01"=dword:00001231 433 | "KeyMacro01.Text"="Tab(7, 1)" 434 | "KeyMacro02"=dword:00001232 435 | "KeyMacro02.Text"="Tab(7, 2)" 436 | "KeyMacro03"=dword:00001233 437 | "KeyMacro03.Text"="Tab(7, 3)" 438 | "KeyMacro04"=dword:00001234 439 | "KeyMacro04.Text"="Tab(7, 4)" 440 | "KeyMacro05"=dword:00001235 441 | "KeyMacro05.Text"="Tab(7, 5)" 442 | "KeyMacro06"=dword:00001236 443 | "KeyMacro06.Text"="Tab(7, 6)" 444 | "KeyMacro07"=dword:00001237 445 | "KeyMacro07.Text"="Tab(7, 7)" 446 | "KeyMacro08"=dword:00001238 447 | "KeyMacro08.Text"="Tab(7, 8)" 448 | "KeyMacro09"=dword:00001239 449 | "KeyMacro09.Text"="Tab(7, 9)" 450 | "KeyMacro10"=dword:00000000 451 | "KeyMacro10.Text"="" 452 | "KeyMacro11"=dword:00000000 453 | "KeyMacro11.Text"="" 454 | "KeyMacro12"=dword:00000000 455 | "KeyMacro12.Text"="" 456 | "KeyMacro13"=dword:00000000 457 | "KeyMacro13.Text"="" 458 | "KeyMacro14"=dword:00000000 459 | "KeyMacro14.Text"="" 460 | "KeyMacro15"=dword:00000000 461 | "KeyMacro15.Text"="" 462 | "KeyMacro16"=dword:00000000 463 | "KeyMacro16.Text"="" 464 | "KeyMacro17"=dword:00000000 465 | "KeyMacro17.Text"="" 466 | "KeyMacro18"=dword:00000000 467 | "KeyMacro18.Text"="" 468 | "KeyMacro19"=dword:00000000 469 | "KeyMacro19.Text"="" 470 | "KeyMacro20"=dword:00000000 471 | "KeyMacro20.Text"="" 472 | "KeyMacro21"=dword:00000000 473 | "KeyMacro21.Text"="" 474 | "KeyMacro22"=dword:00000000 475 | "KeyMacro22.Text"="" 476 | "KeyMacro23"=dword:00000000 477 | "KeyMacro23.Text"="" 478 | "KeyMacro24"=dword:00000000 479 | "KeyMacro24.Text"="" 480 | "KeyMacro25"=dword:00000000 481 | "KeyMacro25.Text"="" 482 | "KeyMacro26"=dword:00000000 483 | "KeyMacro26.Text"="" 484 | "KeyMacro27"=dword:00000000 485 | "KeyMacro27.Text"="" 486 | "KeyMacro28"=dword:00000000 487 | "KeyMacro28.Text"="" 488 | "KeyMacro29"=dword:00000000 489 | "KeyMacro29.Text"="" 490 | "KeyMacro30"=dword:00000000 491 | "KeyMacro30.Text"="" 492 | "KeyMacro31"=dword:00000000 493 | "KeyMacro31.Text"="" 494 | "KeyMacro32"=dword:00000000 495 | "KeyMacro32.Text"="" 496 | "CTS.VkPrompt"=hex:a0 497 | "WndDragKey"=dword:00121101 498 | "ComSpec.EnvAddExePath"=hex:01 499 | "ShowHelpTooltips"=hex:01 500 | "IntegralSize"=hex:00 501 | "CTS.VkCopyAll"=dword:00000000 502 | "Key.TileToLeft"=dword:00005b25 503 | "Key.TileToRIght"=dword:00005b27 504 | "SetDefaultTerminalStartupTSA"=hex:01 505 | "DefaultTerminalNewWindow"=hex:00 506 | "ProcessNewConArg"=hex:01 507 | "ConsoleExceptionHandler"=hex:00 508 | "SaveCmdHistory"=hex:01 509 | "CTS.Intelligent"=hex:01 510 | "CTS.IntelligentExceptions"="far|vim.exe" 511 | "CTS.IBeam"=hex:01 512 | "CTS.HtmlFormat"=hex:00 513 | "HighlightMouseRow"=hex:00 514 | "HighlightMouseCol"=hex:00 515 | "StatusBar.Hide.Time"=hex:01 516 | "TabIcons"=hex:01 517 | "OneTabPerGroup"=hex:00 518 | "ActivateSplitMouseOver"=hex:02 519 | "TabBtnDblClick"=dword:00000000 520 | "TaskbarProgress"=hex:01 521 | "RetardInactivePanes"=hex:00 522 | "Multi.SplitSizeVU"=dword:00105d26 523 | "Multi.SplitSizeVD"=dword:00105d28 524 | "Multi.SplitSizeHL"=dword:00105d25 525 | "Multi.SplitSizeHR"=dword:00105d27 526 | "Multi.SplitFocusU"=dword:00005d26 527 | "Multi.SplitFocusD"=dword:00005d28 528 | "Multi.SplitFocusL"=dword:00005d25 529 | "Multi.SplitFocusR"=dword:00005d27 530 | "Multi.NewConsolePopup2"=dword:00000000 531 | "CloseGroupPrcKey"=dword:00000000 532 | "CloseAllConKey"=dword:00000000 533 | "CloseExceptConKey"=dword:00000000 534 | "CTS.VkCopyFmt0"=dword:00001143 535 | "CTS.VkCopyFmt1"=dword:00101143 536 | "CTS.VkCopyFmt2"=dword:00000000 537 | "HighlightMouseSwitch"=dword:00005d4c 538 | "TransparencyInc"=dword:00000000 539 | "TransparencyDec"=dword:00000000 540 | "Key.MaximizeWidth"=dword:00000000 541 | "Key.MaximizeHeight"=dword:00000000 542 | 543 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Apps] 544 | "Count"=dword:00000000 545 | 546 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Colors] 547 | "Count"=dword:00000000 548 | 549 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Tasks] 550 | "Count"=dword:00000004 551 | 552 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Tasks\Task1] 553 | "Name"="{Development}" 554 | "GuiArgs"="/single /Dir %userprofile%" 555 | "Active"=dword:00000001 556 | "Count"=dword:00000003 557 | "Cmd1"=">*\"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" \"-cur_console:a:t:PS\"" 558 | "Cmd2"="\"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -cur_console:t:PS" 559 | "Cmd3"="%systemroot%\\SysWOW64\\cmd.exe /c \"\"%ProgramFiles(x86)%\\Git\\bin\\sh.exe\" --login -i\" \"-cur_console:t:Git Bash\"" 560 | "Cmd4"="powershell " 561 | "Cmd5"="* %SystemRoot%\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe" 562 | "Hotkey"=dword:00000000 563 | 564 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Tasks\Task2] 565 | "Name"="{Powershell Admin}" 566 | "GuiArgs"="/single /Dir %userprofile%" 567 | "Cmd1"="*\"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -cur_console:a:t:PS" 568 | "Active"=dword:00000000 569 | "Count"=dword:00000001 570 | "Hotkey"=dword:00000000 571 | 572 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Tasks\Task3] 573 | "Name"="{Powershell Non-Admin}" 574 | "GuiArgs"="/single /Dir %userprofile%" 575 | "Cmd1"="\"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -cur_console:t:PS" 576 | "Active"=dword:00000000 577 | "Count"=dword:00000001 578 | "Hotkey"=dword:00000000 579 | 580 | [HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\Tasks\Task4] 581 | "Name"="{Git Bash}" 582 | "GuiArgs"="/single /Dir %userprofile% /icon \"%ProgramFiles(x86)%\\Git\\etc\\git.ico\"" 583 | "Cmd1"="%systemroot%\\SysWOW64\\cmd.exe /c \"\"%ProgramFiles(x86)%\\Git\\bin\\sh.exe\" --login -i\" \"-cur_console:t:Git Bash\" " 584 | "Active"=dword:00000000 585 | "Count"=dword:00000001 586 | "Hotkey"=dword:00000000 587 | 588 | [HKEY_CURRENT_USER\Software\ConEmu\shell] 589 | "CmdLineHistory"=hex(7):00,00 590 | 591 | -------------------------------------------------------------------------------- /configs/vsActionManager.DotSettings: -------------------------------------------------------------------------------- 1 | <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 2 | <s:String x:Key="/Default/Housekeeping/VsActionManager/ShortcutSchemeName/@EntryValue">None</s:String></wpf:ResourceDictionary> 3 | -------------------------------------------------------------------------------- /iso/HideMenu.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jen20/packer-windows-netdev/92f92aeed2856bf7c5af68e7059f92abc5cf7972/iso/HideMenu.vsix -------------------------------------------------------------------------------- /iso/SourceCodePro_FontsOnly-1.017.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jen20/packer-windows-netdev/92f92aeed2856bf7c5af68e7059f92abc5cf7972/iso/SourceCodePro_FontsOnly-1.017.zip -------------------------------------------------------------------------------- /net_dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "builders": [ 3 | { 4 | "type": "vmware-iso", 5 | "iso_url": "./iso/en_windows_8_1_pro_vl_x64_dvd_2971948.iso", 6 | "iso_checksum_type": "md5", 7 | "iso_checksum": "f9ac831f06a760c722df0df34f1b9397", 8 | "headless": false, 9 | "boot_wait": "2m", 10 | "ssh_username": "vagrant", 11 | "ssh_password": "vagrant", 12 | "ssh_wait_timeout": "2h", 13 | "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"", 14 | "guest_os_type": "windows8srv-64", 15 | "tools_upload_flavor": "windows", 16 | "disk_size": 61440, 17 | "vnc_port_min": 5900, 18 | "vnc_port_max": 5980, 19 | "floppy_files": [ 20 | "./answer_files/81/Autounattend.xml", 21 | "./scripts/win-updates.ps1", 22 | "./scripts/openssh.ps1", 23 | "./answer_files/vs/AdminDeployment.xml" 24 | ], 25 | "vmx_data": { 26 | "RemoteDisplay.vnc.enabled": "false", 27 | "RemoteDisplay.vnc.port": "5900", 28 | "memsize": "2048", 29 | "numvcpus": "2", 30 | "scsi0.virtualDev": "lsisas1068", 31 | "virtualhw.version": "10", 32 | "gui.fullScreenAtPowerOn": "TRUE", 33 | "gui.viewModeAtPowerOn": "fullscreen", 34 | "gui.lastPoweredViewMode": "fullscreen", 35 | "gui.fitGuestUsingNativeDisplayResolution": "TRUE", 36 | "gui.applyHostDisplayScalingToGuest": "FALSE" 37 | } 38 | } 39 | ], 40 | "provisioners": [ 41 | { 42 | "type": "shell", 43 | "remote_path": "/tmp/script.bat", 44 | "execute_command": "{{.Vars}} cmd /c C:/Windows/Temp/script.bat", 45 | "scripts": [ 46 | "./scripts/vm-guest-tools.bat", 47 | "./scripts/vagrant-ssh.bat", 48 | "./scripts/dpi.bat", 49 | "./scripts/unpinall.bat", 50 | "./scripts/NoStupidHelp.bat" 51 | ] 52 | }, 53 | { 54 | "type": "file", 55 | "source": "iso/en_visual_studio_premium_2013_x86_dvd_3175275.iso", 56 | "destination": "en_visual_studio_premium_2013_x86_dvd_3175275.iso" 57 | }, 58 | { 59 | "type": "file", 60 | "source": "iso/VS2013.1.iso", 61 | "destination": "VS2013.1.iso" 62 | }, 63 | { 64 | "type": "file", 65 | "source": "iso/ReSharperSetup.8.2.0.2160.msi", 66 | "destination": "ReSharperSetup.8.2.0.2160.msi" 67 | }, 68 | { 69 | "type": "file", 70 | "source": "./iso/HideMenu.vsix", 71 | "destination": "HideMenu.vsix" 72 | }, 73 | { 74 | "type": "file", 75 | "source": "./iso/SourceCodePro_FontsOnly-1.017.zip", 76 | "destination": "SourceCodePro_FontsOnly-1.017.zip" 77 | }, 78 | { 79 | "type": "file", 80 | "source": "./iso/Git-1.9.2-preview20140411.exe", 81 | "destination": "Git-1.9.2-preview20140411.exe" 82 | }, 83 | { 84 | "type": "file", 85 | "source": "./iso/ConEmuSetup.140422.exe", 86 | "destination": "ConEmuSetup.140422.exe" 87 | }, 88 | { 89 | "type": "file", 90 | "source": "./configs/Sane.vssettings", 91 | "destination": "Sane.vssettings" 92 | }, 93 | { 94 | "type": "file", 95 | "source": "./configs/ConEmu.reg", 96 | "destination": "ConEmu.reg" 97 | }, 98 | { 99 | "type": "file", 100 | "source": "./configs/vsActionManager.DotSettings", 101 | "destination": "vsActionManager.DotSettings" 102 | }, 103 | { 104 | "type": "shell", 105 | "remote_path": "/tmp/fonts.ps1", 106 | "script": "scripts/fonts.ps1", 107 | "execute_command": "powershell -File c:/windows/temp/fonts.ps1" 108 | }, 109 | { 110 | "type": "shell", 111 | "remote_path": "/tmp/git.ps1", 112 | "script": "scripts/git.ps1", 113 | "execute_command": "powershell -File c:/windows/temp/git.ps1" 114 | }, 115 | { 116 | "type": "shell", 117 | "remote_path": "/tmp/conemu.ps1", 118 | "script": "scripts/conemu.ps1", 119 | "execute_command": "powershell -File c:/windows/temp/conemu.ps1" 120 | }, 121 | { 122 | "type": "shell", 123 | "remote_path": "/tmp/vs2013.ps1", 124 | "script": "scripts/vs2013.ps1", 125 | "execute_command": "powershell -File c:/windows/temp/vs2013.ps1" 126 | }, 127 | { 128 | "type": "shell", 129 | "remote_path": "/tmp/reboot.bat", 130 | "script": "scripts/reboot.bat", 131 | "execute_command": "c:/windows/temp/reboot.bat" 132 | }, 133 | { 134 | "type": "shell", "inline": ["rm -rf /tmp/*"] 135 | } 136 | ], 137 | "post-processors": [ 138 | { 139 | "type": "vagrant", 140 | "keep_input_artifact": false, 141 | "output": "net_dev_{{.Provider}}.box", 142 | "vagrantfile_template": "vagrantfile-net_dev.template" 143 | } 144 | ] 145 | } 146 | -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | *.msi 3 | *.msu -------------------------------------------------------------------------------- /scripts/NoStupidHelp.bat: -------------------------------------------------------------------------------- 1 | reg.exe ADD "HKCU\Software\Policies\Microsoft\Windows\EdgeUI" /v DisableHelpSticker /t REG_DWORD /d 1 /f 2 | reg.exe ADD "HKLM\Software\Policies\Microsoft\Windows\EdgeUI" /v DisableHelpSticker /t REG_DWORD /d 1 /f 3 | reg.exe ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v EnableBalloonTips /t REG_DWORD /d 0 /f 4 | -------------------------------------------------------------------------------- /scripts/chef.bat: -------------------------------------------------------------------------------- 1 | if not exist "C:\Windows\Temp\chef.msi" ( 2 | powershell -Command "(New-Object System.Net.WebClient).DownloadFile('http://www.opscode.com/chef/install.msi', 'C:\Windows\Temp\chef.msi')" <NUL 3 | ) 4 | 5 | msiexec /qb /i C:\Windows\Temp\chef.msi 6 | powershell -Command "Start-Sleep 1" <NUL -------------------------------------------------------------------------------- /scripts/chocolatey.bat: -------------------------------------------------------------------------------- 1 | powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" <NUL 2 | 3 | <nul set /p ".=;C:\Chocolatey\bin" >> C:\Windows\Temp\PATH 4 | set /p PATH=<C:\Windows\Temp\PATH 5 | setx PATH "%PATH%" /m -------------------------------------------------------------------------------- /scripts/chocopacks.bat: -------------------------------------------------------------------------------- 1 | :: Ensure C:\Chocolatey\bin is on the path 2 | set /p PATH=<C:\Windows\Temp\PATH 3 | 4 | :: Install all the things; for example: 5 | cmd /c choco install 7zip 6 | cmd /c choco install notepadplusplus -------------------------------------------------------------------------------- /scripts/conemu.ps1: -------------------------------------------------------------------------------- 1 | $conemuSetup = "C:\Users\vagrant\ConEmuSetup.140422.exe" 2 | $conemuArgs = '/p:x64 /quiet ADDLOCAL="FConEmuGui,FConEmuGui64,ProductFeature,FConEmuBase32,FConEmuBase,FConEmuBase64,FConEmuCmdExt,FConEmuDocs,FCEShortcutStart"' 3 | 4 | Write-Host "Installing ConEmu" 5 | Start-Process -FilePath $conemuSetup -ArgumentList $conemuArgs -NoNewWindow -Wait 6 | Remove-Item -Force -Path $conemuSetup 7 | 8 | Write-Host "Installing Sane Defaults for ConEmu" 9 | $defaultsPath = "C:\Users\vagrant\ConEmu.reg" 10 | Start-Process -FilePath "reg" -ArgumentList "import $defaultsPath" -NoNewWindow -Wait 11 | Remove-Item -Force -Path $defaultsPath 12 | 13 | Write-Host "Pinning ComEmu to the TaskBar" 14 | $shell = new-object -com "Shell.Application" 15 | $dir = $shell.Namespace("C:\Program Files\ConEmu") 16 | $item = $dir.ParseName("ConEmu64.exe") 17 | $item.InvokeVerb('taskbarpin') 18 | -------------------------------------------------------------------------------- /scripts/dis-updates.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Disables automatic windows updates 4 | .DESCRIPTION 5 | Disables checking for and applying Windows Updates (does not prevent updates from being applied manually or being pushed down) 6 | Run on the machine that updates need disabling on. 7 | .PARAMETER <paramName> 8 | None 9 | .EXAMPLE 10 | ./Disable-WindowsUpdates.ps1 11 | #> 12 | $RunningAsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 13 | if ($RunningAsAdmin) 14 | { 15 | 16 | $Updates = (New-Object -ComObject "Microsoft.Update.AutoUpdate").Settings 17 | 18 | if ($Updates.ReadOnly -eq $True) { Write-Error "Cannot update Windows Update settings due to GPO restrictions." } 19 | 20 | else { 21 | $Updates.NotificationLevel = 1 #Disabled 22 | $Updates.Save() 23 | $Updates.Refresh() 24 | Write-Output "Automatic Windows Updates disabled." 25 | } 26 | } 27 | 28 | else 29 | { Write-Warning "Must be executed in Administrator level shell." 30 | Write-Warning "Script Cancelled!" } 31 | -------------------------------------------------------------------------------- /scripts/dpi.bat: -------------------------------------------------------------------------------- 1 | reg.exe ADD "HKCU\Control Panel\Desktop" /v Win8DpiScaling /t REG_DWORD /d 1 /f 2 | reg.exe ADD "HKCU\Control Panel\Desktop" /v LogPixels /t REG_DWORD /d 144 /f 3 | reg.exe ADD "HKCU\Control Panel\Desktop" /v LogicalDPIOverride /t REG_DWORD /d 1 /f 4 | -------------------------------------------------------------------------------- /scripts/fonts.ps1: -------------------------------------------------------------------------------- 1 | $shell = New-Object -com "Shell.Application" 2 | $zip = $shell.NameSpace("C:\Users\vagrant\SourceCodePro_FontsOnly-1.017.zip") 3 | $destination = "C:\Users\vagrant\" 4 | foreach($item in $zip.items()) 5 | { 6 | $shell.Namespace($destination).CopyHere($item) 7 | } 8 | 9 | $fontPath = Join-Path (Join-Path $destination "SourceCodePro_FontsOnly-1.017") "TTF" 10 | $dir = $shell.NameSpace($fontPath) 11 | Get-ChildItem -Path $fontPath -filter "*.ttf" | ForEach { 12 | $dir.ParseName($_.Name).InvokeVerb("Install") 13 | } 14 | 15 | Remove-Item -Force "C:\Users\vagrant\SourceCodePro_FontsOnly-1.017.zip" 16 | Remove-Item -Recurse -Force "C:\Users\vagrant\SourceCodePro_FontsOnly-1.017" 17 | -------------------------------------------------------------------------------- /scripts/git.ps1: -------------------------------------------------------------------------------- 1 | $gitInstallerPath = "C:\Users\vagrant\Git-1.9.2-preview20140411.exe" 2 | 3 | Start-Process -FilePath $gitInstallerPath -ArgumentList '/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS="assoc,assoc_sh"' -NoNewWindow -Wait 4 | 5 | $newPath="${Env:Path};${Env:ProgramFiles(x86)}\Git\bin;${Env:ProgramFiles(x86)}\Git\share\vim\vim74" 6 | Set-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" -Name PATH -Value $newPath 7 | [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine") 8 | 9 | Start-Process -NoNewWindow -Wait -FilePath "${Env:ProgramFiles(x86)}\Git\bin\git.exe" -ArgumentList "config --global core.autocrlf true" 10 | 11 | Remove-Item -Force -Path $gitInstallerPath 12 | 13 | Start-Process -NoNewWindow -Wait -FilePath "setx" -ArgumentList "TERM msys" 14 | -------------------------------------------------------------------------------- /scripts/hotfix-KB2842230.bat: -------------------------------------------------------------------------------- 1 | :: Windows 8 / Windows 2012 require KB2842230 hotfix 2 | :: The Windows Remote Management (WinRM) service does not use the customized value of the MaxMemoryPerShellMB quota. 3 | :: Instead, the WinRM service uses the default value, which is 150 MB. 4 | :: http://hotfixv4.microsoft.com/Windows%208%20RTM/nosp/Fix452763/9200/free/463941_intl_x64_zip.exe 5 | 6 | @echo off 7 | set hotfix="C:\Windows\Temp\Windows8-RT-KB2842230-x64.msu" 8 | if not exist %hotfix% goto :eof 9 | 10 | :: get windows version 11 | for /f "tokens=2 delims=[]" %%G in ('ver') do (set _version=%%G) 12 | for /f "tokens=2,3,4 delims=. " %%G in ('echo %_version%') do (set _major=%%G& set _minor=%%H& set _build=%%I) 13 | 14 | :: 6.2 or 6.3 15 | if %_major% neq 6 goto :eof 16 | if %_minor% lss 2 goto :eof 17 | if %_minor% gtr 3 goto :eof 18 | 19 | @echo on 20 | start /wait wusa "%hotfix%" /quiet /norestart -------------------------------------------------------------------------------- /scripts/openssh.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [switch]$AutoStart = $false 3 | ) 4 | 5 | Write-Host "AutoStart: $AutoStart" 6 | $is_64bit = [IntPtr]::size -eq 8 7 | 8 | # setup openssh 9 | $ssh_download_url = "http://www.mls-software.com/files/setupssh-6.4p1-1.exe" 10 | if ($is_64bit) { 11 | Write-Host "64 bit OS found" 12 | $ssh_download_url = "http://www.mls-software.com/files/setupssh-6.4p1-1(x64).exe" 13 | } 14 | 15 | if (!(Test-Path "C:\Program Files\OpenSSH\bin\ssh.exe")) { 16 | Write-Host "Downloading $ssh_download_url" 17 | (New-Object System.Net.WebClient).DownloadFile($ssh_download_url, "C:\Windows\Temp\openssh.exe") 18 | Start-Process "C:\Windows\Temp\openssh.exe" "/S /port=22 /privsep=1 /password=D@rj33l1ng" -NoNewWindow -Wait 19 | } 20 | 21 | Stop-Service "OpenSSHd" -Force 22 | 23 | # ensure vagrant can log in 24 | Write-Host "Setting vagrant user file permissions" 25 | New-Item -ItemType Directory -Force -Path "C:\Users\vagrant\.ssh" 26 | C:\Windows\System32\icacls.exe "C:\Users\vagrant" /grant "vagrant:(OI)(CI)F" 27 | C:\Windows\System32\icacls.exe "C:\Program Files\OpenSSH\bin" /grant "vagrant:(OI)RX" 28 | C:\Windows\System32\icacls.exe "C:\Program Files\OpenSSH\usr\sbin" /grant "vagrant:(OI)RX" 29 | 30 | Write-Host "Setting SSH home directories" 31 | (Get-Content "C:\Program Files\OpenSSH\etc\passwd") | 32 | Foreach-Object { $_ -replace '/home/(\w+)', '/cygdrive/c/Users/$1' } | 33 | Set-Content 'C:\Program Files\OpenSSH\etc\passwd' 34 | 35 | # fix opensshd to not be strict 36 | Write-Host "Setting OpenSSH to be non-strict" 37 | $sshd_config = Get-Content "C:\Program Files\OpenSSH\etc\sshd_config" 38 | $sshd_config = $sshd_config -replace 'StrictModes yes', 'StrictModes no' 39 | $sshd_config = $sshd_config -replace '#PubkeyAuthentication yes', 'PubkeyAuthentication yes' 40 | $sshd_config = $sshd_config -replace '#PermitUserEnvironment no', 'PermitUserEnvironment yes' 41 | # disable the use of DNS to speed up the time it takes to establish a connection 42 | $sshd_config = $sshd_config -replace '#UseDNS yes', 'UseDNS no' 43 | # disable the login banner 44 | $sshd_config = $sshd_config -replace 'Banner /etc/banner.txt', '#Banner /etc/banner.txt' 45 | Set-Content "C:\Program Files\OpenSSH\etc\sshd_config" $sshd_config 46 | 47 | # use c:\Windows\Temp as /tmp location 48 | Write-Host "Setting temp directory location" 49 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\tmp" 50 | C:\Program` Files\OpenSSH\bin\junction.exe /accepteula "C:\Program Files\OpenSSH\tmp" "C:\Windows\Temp" 51 | C:\Windows\System32\icacls.exe "C:\Windows\Temp" /grant "vagrant:(OI)(CI)F" 52 | 53 | # add 64 bit environment variables missing from SSH 54 | Write-Host "Setting SSH environment" 55 | $sshenv = "TEMP=C:\Windows\Temp" 56 | if ($is_64bit) { 57 | $env_vars = "ProgramFiles(x86)=C:\Program Files (x86)", ` 58 | "ProgramW6432=C:\Program Files", ` 59 | "CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files", ` 60 | "CommonProgramW6432=C:\Program Files\Common Files" 61 | $sshenv = $sshenv + "`r`n" + ($env_vars -join "`r`n") 62 | } 63 | Set-Content C:\Users\vagrant\.ssh\environment $sshenv 64 | 65 | # record the path for provisioners (without the newline) 66 | Write-Host "Recording PATH for provisioners" 67 | Set-Content C:\Windows\Temp\PATH ([byte[]][char[]] $env:PATH) -Encoding Byte 68 | 69 | # configure firewall 70 | Write-Host "Configuring firewall" 71 | netsh advfirewall firewall add rule name="SSHD" dir=in action=allow service=OpenSSHd enable=yes 72 | netsh advfirewall firewall add rule name="SSHD" dir=in action=allow program="C:\Program Files\OpenSSH\usr\sbin\sshd.exe" enable=yes 73 | netsh advfirewall firewall add rule name="ssh" dir=in action=allow protocol=TCP localport=22 74 | 75 | if ($AutoStart -eq $true) { 76 | Start-Service "OpenSSHd" 77 | } -------------------------------------------------------------------------------- /scripts/oracle-cert.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jen20/packer-windows-netdev/92f92aeed2856bf7c5af68e7059f92abc5cf7972/scripts/oracle-cert.cer -------------------------------------------------------------------------------- /scripts/puppet-enterprise.bat: -------------------------------------------------------------------------------- 1 | if not exist "C:\Windows\Temp\puppet.msi" ( 2 | powershell -Command "(New-Object System.Net.WebClient).DownloadFile('http://pm.puppetlabs.com/puppet-enterprise/3.0.1/puppet-enterprise-3.0.1.msi', 'C:\Windows\Temp\puppet.msi')" <NUL 3 | ) 4 | 5 | :: http://docs.puppetlabs.com/pe/latest/install_windows.html 6 | msiexec /qn /i C:\Windows\Temp\puppet.msi /log C:\Windows\Temp\puppet.log 7 | 8 | <nul set /p ".=;C:\Program Files (x86)\Puppet Labs\Puppet Enterprise\bin" >> C:\Windows\Temp\PATH 9 | set /p PATH=<C:\Windows\Temp\PATH 10 | setx PATH "%PATH%" /m -------------------------------------------------------------------------------- /scripts/puppet.bat: -------------------------------------------------------------------------------- 1 | if not exist "C:\Windows\Temp\puppet.msi" ( 2 | powershell -Command "(New-Object System.Net.WebClient).DownloadFile('http://downloads.puppetlabs.com/windows/puppet-3.4.3.msi', 'C:\Windows\Temp\puppet.msi')" <NUL 3 | ) 4 | 5 | :: http://docs.puppetlabs.com/pe/latest/install_windows.html 6 | msiexec /qn /i C:\Windows\Temp\puppet.msi /log C:\Windows\Temp\puppet.log 7 | 8 | <nul set /p ".=;C:\Program Files (x86)\Puppet Labs\Puppet\bin" >> C:\Windows\Temp\PATH 9 | set /p PATH=<C:\Windows\Temp\PATH 10 | setx PATH "%PATH%" /m -------------------------------------------------------------------------------- /scripts/reboot.bat: -------------------------------------------------------------------------------- 1 | echo Rebooting Machine 2 | shutdown /r /t 1 /d p:4:1 /c "Packer Reboot" 3 | echo Stopping OpenSSH 4 | taskkill /im sshd.exe /f 5 | -------------------------------------------------------------------------------- /scripts/unpinall.bat: -------------------------------------------------------------------------------- 1 | reg DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband /f 2 | del /f /s /q /a "c:\Users\vagrant\AppData\Local\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\*" 3 | -------------------------------------------------------------------------------- /scripts/vagrant-ssh.bat: -------------------------------------------------------------------------------- 1 | :: vagrant public key 2 | if exist a:\vagrant.pub ( 3 | copy a:\vagrant.pub C:\Users\vagrant\.ssh\authorized_keys 4 | ) else ( 5 | powershell -Command "(New-Object System.Net.WebClient).DownloadFile('https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub', 'C:\Users\vagrant\.ssh\authorized_keys')" <NUL 6 | ) -------------------------------------------------------------------------------- /scripts/vm-guest-tools.bat: -------------------------------------------------------------------------------- 1 | if not exist "C:\Windows\Temp\7z920-x64.msi" ( 2 | powershell -Command "(New-Object System.Net.WebClient).DownloadFile('http://downloads.sourceforge.net/sevenzip/7z920-x64.msi', 'C:\Windows\Temp\7z920-x64.msi')" <NUL 3 | ) 4 | msiexec /qb /i C:\Windows\Temp\7z920-x64.msi 5 | 6 | if "%PACKER_BUILDER_TYPE%" equ "vmware-iso" goto :vmware 7 | if "%PACKER_BUILDER_TYPE%" equ "virtualbox-iso" goto :virtualbox 8 | goto :done 9 | 10 | :vmware 11 | 12 | if exist "C:\Users\vagrant\windows.iso" ( 13 | move /Y C:\Users\vagrant\windows.iso C:\Windows\Temp 14 | ) 15 | 16 | if not exist "C:\Windows\Temp\windows.iso" ( 17 | powershell -Command "(New-Object System.Net.WebClient).DownloadFile('http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/windows/packages/tools-windows-9.6.1.exe.tar', 'C:\Windows\Temp\vmware-tools.exe.tar')" <NUL 18 | cmd /c ""C:\Program Files\7-Zip\7z.exe" x C:\Windows\Temp\vmware-tools.exe.tar -oC:\Windows\Temp" 19 | FOR /r "C:\Windows\Temp" %%a in (tools-windows-*.exe) DO REN "%%~a" "tools-windows.exe" 20 | cmd /c C:\Windows\Temp\tools-windows 21 | move /Y "C:\Program Files (x86)\VMware\tools-windows\windows.iso" C:\Windows\Temp 22 | rd /S /Q "C:\Program Files (x86)\VMWare" 23 | ) 24 | 25 | cmd /c ""C:\Program Files\7-Zip\7z.exe" x "C:\Windows\Temp\windows.iso" -oC:\Windows\Temp\VMWare" 26 | cmd /c C:\Windows\Temp\VMWare\setup.exe /S /v"/qn REBOOT=R\" 27 | 28 | goto :done 29 | 30 | :virtualbox 31 | 32 | :: There needs to be Oracle CA (Certificate Authority) certificates installed in order 33 | :: to prevent user intervention popups which will undermine a silent installation. 34 | cmd /c certutil -addstore -f "TrustedPublisher" A:\oracle-cert.cer 35 | 36 | move /Y C:\Users\vagrant\VBoxGuestAdditions.iso C:\Windows\Temp 37 | cmd /c ""C:\Program Files\7-Zip\7z.exe" x C:\Windows\Temp\VBoxGuestAdditions.iso -oC:\Windows\Temp\virtualbox" 38 | cmd /c C:\Windows\Temp\virtualbox\VBoxWindowsAdditions.exe /S 39 | goto :done 40 | 41 | :done 42 | msiexec /qb /x C:\Windows\Temp\7z920-x64.msi -------------------------------------------------------------------------------- /scripts/vs2013.ps1: -------------------------------------------------------------------------------- 1 | Write-Host "Installing Visual Studio" 2 | $isoPath = "C:\users\vagrant\en_visual_studio_premium_2013_x86_dvd_3175275.iso" 3 | $rc = Mount-DiskImage -PassThru -ImagePath $isoPath 4 | $driveLetter = ($rc | Get-Volume).DriveLetter 5 | $installPath = Join-Path "${driveLetter}:" "vs_premium.exe" 6 | Start-Process -FilePath $installPath -ArgumentList "/adminfile A:\AdminDeployment.xml /quiet /norestart" -NoNewWindow -Wait 7 | Dismount-DiskImage -ImagePath $isoPath 8 | Remove-Item -Force -Path $isoPath 9 | 10 | 11 | Write-Host "Installing Visual Studio Update 1" 12 | $isoPath = "C:\Users\vagrant\VS2013.1.iso" 13 | $rc = Mount-DiskImage -PassThru -ImagePath $isoPath 14 | $driveLetter = ($rc | Get-Volume).DriveLetter 15 | $installPath = Join-Path "${driveLetter}:" "VS2013.1.exe" 16 | Start-Process -FilePath $installPath -ArgumentList "/quiet /norestart" -NoNewWindow -Wait 17 | Dismount-DiskImage -ImagePath $isoPath 18 | Remove-Item -Force -Path $isoPath 19 | 20 | 21 | Write-Host "Installing Resharper" 22 | $resharperInstallerPath = "C:\Users\vagrant\ReSharperSetup.8.2.0.2160.msi" 23 | Start-Process -FilePath $resharperInstallerPath -ArgumentList "/qn" -Wait 24 | Remove-Item -Force -Path $resharperInstallerPath 25 | 26 | 27 | Write-Host "Installing the Hide Main Menu VSIX" 28 | $vsixInstallerPath = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\VSIXInstaller.exe" 29 | $extensionPath = "c:\users\vagrant\HideMenu.vsix" 30 | Start-Process -FilePath $vsixInstallerPath -ArgumentList "/q $extensionPath" -NoNewWindow -Wait 31 | Remove-Item -Force -Path $extensionPath 32 | 33 | 34 | Write-Host "Configuring Resharper to use the IntelliJ Keyboard Scheme" 35 | $dotSettingsSource = "C:\Users\vagrant\vsActionManager.DotSettings" 36 | $dotSettingsDestination = "C:\Users\vagrant\AppData\Local\JetBrains\ReSharper\vAny\vs12.0" 37 | New-Item $dotSettingsDestination -Type directory 38 | Move-Item -Force -Path $dotSettingsSource -Destination $dotSettingsDestination 39 | 40 | 41 | Write-Host "Pinning Visual Studio to the TaskBar" 42 | $shell = new-object -com "Shell.Application" 43 | $dir = $shell.Namespace("C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE") 44 | $item = $dir.ParseName("devenv.exe") 45 | $item.InvokeVerb('taskbarpin') 46 | 47 | 48 | Write-Host "Importing some sensible defaults to Visual Studio and killing the first run wizard" 49 | $settingsPath = "C:\Users\vagrant\Sane.vssettings" 50 | $devenvPath = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" 51 | $process = Start-Process -FilePath $devenvPath -ArgumentList "/ResetSettings $settingsPath /Command File.Exit" -NoNewWindow -PassThru 52 | #If this doesn't complete in 1 minute, then seriously, WTF? 53 | if ( ! $process.WaitForExit(60000) ) { 54 | $process.Kill() 55 | } 56 | Remove-Item -Force -Path $settingsPath 57 | 58 | 59 | Write-Host "FIXING THE ALL CAPS MENU IN VISUAL STUDIO" 60 | Set-ItemProperty -Path HKCU:\Software\Microsoft\VisualStudio\12.0\General -Name SuppressUppercaseConversion -Type DWord -Value 1 61 | 62 | 63 | #Write-Host "Fixing the Visual Studio Start Screen" 64 | New-ItemProperty -Force -Path HKCU:\Software\Microsoft\VisualStudio\12.0\General -Name OnEnvironmentStartup -Type DWord -Value 4 65 | New-Item -Force -Path HKCU:\Software\Microsoft\VisualStudio\12.0\General\StartPage 66 | New-ItemProperty -Force -Path HKCU:\Software\Microsoft\VisualStudio\12.0\General\StartPage -Name IsDownloadRefreshEnabled -Type DWord -Value 0 67 | New-ItemProperty -Force -Path HKCU:\Software\Microsoft\VisualStudio\12.0\General\StartPage -Name OptIn -Type DWord -Value 0 68 | 69 | #We register ReSharper in the box VagrantFile instead of here as it's 70 | # a per user setting which comes from an environment variable. 71 | -------------------------------------------------------------------------------- /scripts/win-updates.ps1: -------------------------------------------------------------------------------- 1 | param($global:RestartRequired=0, 2 | $global:MoreUpdates=0, 3 | $global:MaxCycles=5) 4 | 5 | function Check-ContinueRestartOrEnd() { 6 | $RegistryKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 7 | $RegistryEntry = "InstallWindowsUpdates" 8 | switch ($global:RestartRequired) { 9 | 0 { 10 | $prop = (Get-ItemProperty $RegistryKey).$RegistryEntry 11 | if ($prop) { 12 | Write-Host "Restart Registry Entry Exists - Removing It" 13 | Remove-ItemProperty -Path $RegistryKey -Name $RegistryEntry -ErrorAction SilentlyContinue 14 | } 15 | 16 | Write-Host "No Restart Required" 17 | Check-WindowsUpdates 18 | 19 | if (($global:MoreUpdates -eq 1) -and ($script:Cycles -le $global:MaxCycles)) { 20 | Stop-Service $script:ServiceName -Force 21 | Set-Service -Name $script:ServiceName -StartupType Disabled -Status Stopped 22 | Install-WindowsUpdates 23 | } elseif ($script:Cycles -gt $global:MaxCycles) { 24 | Write-Host "Exceeded Cycle Count - Stopping" 25 | } else { 26 | Write-Host "Done Installing Windows Updates" 27 | Set-Service -Name $script:ServiceName -StartupType Automatic -Status Running 28 | } 29 | } 30 | 1 { 31 | $prop = (Get-ItemProperty $RegistryKey).$RegistryEntry 32 | if (-not $prop) { 33 | Write-Host "Restart Registry Entry Does Not Exist - Creating It" 34 | Set-ItemProperty -Path $RegistryKey -Name $RegistryEntry -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File $($script:ScriptPath)" 35 | } else { 36 | Write-Host "Restart Registry Entry Exists Already" 37 | } 38 | 39 | Write-Host "Restart Required - Restarting..." 40 | Restart-Computer 41 | } 42 | default { 43 | Write-Host "Unsure If A Restart Is Required" 44 | break 45 | } 46 | } 47 | } 48 | 49 | function Install-WindowsUpdates() { 50 | $script:Cycles++ 51 | Write-Host 'Evaluating Available Updates:' 52 | $UpdatesToDownload = New-Object -ComObject 'Microsoft.Update.UpdateColl' 53 | foreach ($Update in $SearchResult.Updates) { 54 | if (($Update -ne $null) -and (!$Update.IsDownloaded)) { 55 | [bool]$addThisUpdate = $false 56 | if ($Update.InstallationBehavior.CanRequestUserInput) { 57 | Write-Host "> Skipping: $($Update.Title) because it requires user input" 58 | } else { 59 | if (!($Update.EulaAccepted)) { 60 | Write-Host "> Note: $($Update.Title) has a license agreement that must be accepted. Accepting the license." 61 | $Update.AcceptEula() 62 | [bool]$addThisUpdate = $true 63 | } else { 64 | [bool]$addThisUpdate = $true 65 | } 66 | } 67 | 68 | if ([bool]$addThisUpdate) { 69 | Write-Host "Adding: $($Update.Title)" 70 | $UpdatesToDownload.Add($Update) |Out-Null 71 | } 72 | } 73 | } 74 | 75 | if ($UpdatesToDownload.Count -eq 0) { 76 | Write-Host "No Updates To Download..." 77 | } else { 78 | Write-Host 'Downloading Updates...' 79 | $Downloader = $UpdateSession.CreateUpdateDownloader() 80 | $Downloader.Updates = $UpdatesToDownload 81 | $Downloader.Download() 82 | } 83 | 84 | $UpdatesToInstall = New-Object -ComObject 'Microsoft.Update.UpdateColl' 85 | [bool]$rebootMayBeRequired = $false 86 | Write-Host 'The following updates are downloaded and ready to be installed:' 87 | foreach ($Update in $SearchResult.Updates) { 88 | if (($Update.IsDownloaded)) { 89 | Write-Host "> $($Update.Title)" 90 | $UpdatesToInstall.Add($Update) |Out-Null 91 | 92 | if ($Update.InstallationBehavior.RebootBehavior -gt 0){ 93 | [bool]$rebootMayBeRequired = $true 94 | } 95 | } 96 | } 97 | 98 | if ($UpdatesToInstall.Count -eq 0) { 99 | Write-Host 'No updates available to install...' 100 | $global:MoreUpdates=0 101 | $global:RestartRequired=0 102 | Set-Service -Name $script:ServiceName -StartupType Automatic -Status Running 103 | break 104 | } 105 | 106 | if ($rebootMayBeRequired) { 107 | Write-Host 'These updates may require a reboot' 108 | $global:RestartRequired=1 109 | } 110 | 111 | Write-Host 'Installing updates...' 112 | 113 | $Installer = $script:UpdateSession.CreateUpdateInstaller() 114 | $Installer.Updates = $UpdatesToInstall 115 | $InstallationResult = $Installer.Install() 116 | 117 | Write-Host "Installation Result: $($InstallationResult.ResultCode)" 118 | Write-Host "Reboot Required: $($InstallationResult.RebootRequired)" 119 | Write-Host 'Listing of updates installed and individual installation results:' 120 | if ($InstallationResult.RebootRequired) { 121 | $global:RestartRequired=1 122 | } else { 123 | $global:RestartRequired=0 124 | } 125 | 126 | for($i=0; $i -lt $UpdatesToInstall.Count; $i++) { 127 | New-Object -TypeName PSObject -Property @{ 128 | Title = $UpdatesToInstall.Item($i).Title 129 | Result = $InstallationResult.GetUpdateResult($i).ResultCode 130 | } 131 | } 132 | 133 | Check-ContinueRestartOrEnd 134 | } 135 | 136 | function Check-WindowsUpdates() { 137 | Write-Host "Checking For Windows Updates" 138 | $Username = $env:USERDOMAIN + "\" + $env:USERNAME 139 | 140 | New-EventLog -Source $ScriptName -LogName 'Windows Powershell' -ErrorAction SilentlyContinue 141 | 142 | $Message = "Script: " + $ScriptPath + "`nScript User: " + $Username + "`nStarted: " + (Get-Date).toString() 143 | 144 | Write-EventLog -LogName 'Windows Powershell' -Source $ScriptName -EventID "104" -EntryType "Information" -Message $Message 145 | Write-Host $Message 146 | 147 | $script:UpdateSearcher = $script:UpdateSession.CreateUpdateSearcher() 148 | $script:SearchResult = $script:UpdateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0") 149 | if ($SearchResult.Updates.Count -ne 0) { 150 | $script:SearchResult.Updates |Select-Object -Property Title, Description, SupportUrl, UninstallationNotes, RebootRequired, EulaAccepted |Format-List 151 | $global:MoreUpdates=1 152 | } else { 153 | Write-Host 'There are no applicable updates' 154 | $global:RestartRequired=0 155 | $global:MoreUpdates=0 156 | } 157 | } 158 | 159 | $script:ScriptName = $MyInvocation.MyCommand.ToString() 160 | $script:ScriptPath = $MyInvocation.MyCommand.Path 161 | $script:UpdateSession = New-Object -ComObject 'Microsoft.Update.Session' 162 | $script:UpdateSession.ClientApplicationID = 'Packer Windows Update Installer' 163 | $script:UpdateSearcher = $script:UpdateSession.CreateUpdateSearcher() 164 | $script:SearchResult = New-Object -ComObject 'Microsoft.Update.UpdateColl' 165 | $script:Cycles = 0 166 | 167 | $script:ServiceName = "OpenSSHd" 168 | 169 | Stop-Service $script:ServiceName -Force 170 | Set-Service -Name $script:ServiceName -StartupType Disabled -Status Stopped 171 | 172 | Check-WindowsUpdates 173 | if ($global:MoreUpdates -eq 1) { 174 | Install-WindowsUpdates 175 | } else { 176 | Check-ContinueRestartOrEnd 177 | } -------------------------------------------------------------------------------- /vagrantfile-net_dev.template: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.configure("2") do |config| 5 | config.vm.define "vagrant-net_dev" 6 | config.vm.box = "net_dev" 7 | 8 | # Admin user name and password 9 | config.winrm.username = "vagrant" 10 | config.winrm.password = "vagrant" 11 | 12 | config.vm.guest = :windows 13 | config.windows.halt_timeout = 15 14 | 15 | config.vm.communicator = "winrm" 16 | config.vm.network :forwarded_port, guest: 5985, host: 5985, id: "winrm", auto_correct: true 17 | 18 | config.vm.provider "vmware_fusion" do |v| 19 | v.gui = true 20 | v.vmx["memsize"] = "2048" 21 | v.vmx["ethernet0.virtualDev"] = "vmxnet3" 22 | v.vmx["RemoteDisplay.vnc.enabled"] = "false" 23 | v.vmx["RemoteDisplay.vnc.port"] = "5900" 24 | v.vmx["scsi0.virtualDev"] = "lsisas1068" 25 | end 26 | 27 | #Copy Resharper license and register if environment var is set 28 | if ENV['RESHARPER_LICENSE_REGKEY'] != nil 29 | config.vm.provision "file" do |s| 30 | s.source = ENV['RESHARPER_LICENSE_REGKEY'] 31 | s.destination = "resharper.reg" 32 | end 33 | 34 | config.vm.provision "shell", 35 | inline: 'reg import c:\Users\vagrant\resharper.reg' 36 | 37 | config.vm.provision "shell", 38 | inline: 'del c:\Users\vagrant\resharper.reg' 39 | end 40 | 41 | $git_user = `git config user.name` 42 | config.vm.provision "shell", 43 | inline: "git config --global user.name \"#$git_user\"" 44 | 45 | $git_email = `git config user.email` 46 | config.vm.provision "shell", 47 | inline: "git config --global user.email #$git_email" 48 | end 49 | --------------------------------------------------------------------------------