システム間のWindowsウェイ設定の同期

ハブpowershell ウィーク が始まると、ドラフトから記事を削除する時が来たと判断しました。

私がZverCDだったのと同時に、ubuntaを試していて、Windowsプログラム用の単一のリポジトリを作成しない理由に心から驚きました。 それから約5年が経ち、Windowsの下にパッケージマネージャーが現れました。 よくwin10でOneGetを行いましたが、OneGetなしではアナログが現れ始めました。 ある種の突破口はチョコレートでした。 実際、チョコレートのようなスクリプトの記述から、普遍的な完全同期と移植性の私の叙事詩が始まりました。 オペレーティングシステムの新しいインストールは、私にとって、1つのスクリプトの起動のように見えます(理想的な世界では!)。新しいインストールのたびに、真実はますます拡張可能になります。 このストーリーは、Windowsでどのソフトウェアをどのような方法で同期するかについてです。



あるコンピューターから別のコンピューターに移動する必要があるたびに、使い慣れた環境をインストールする必要があります。 これは、プログラムと設定ホットキーのセットです。 最初は単なるバットスクリプトでしたが、時間が経つにつれて、さまざまなオプション設定とタスクのセットを備えたPowerShellスクリプトに進化しました。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin choco install google-chrome-x64 choco install sublimetext3 choco install dropbox choco install puntoswitcher choco install skype choco install keepass choco install keepass-keepasshttp choco install git choco install sysinternals choco install kdiff3 choco install gimp choco install fiddler4 choco install tortoisegit choco install tortoisesvn choco install evernote choco install treesizefree choco install teamviewerr schtasks /Create /RU "Domain\Username" /SC ONLOGON /TN "autohotkey" /TR "D:\Dropbox\Apps\Autohotkey\runKeepass.exe" /IT /V1 cd %AppData%\Roaming\Sublime Text 3\Packages\ mklink /D User "d:\Dropbox\Apps\Sublime Text 3\User" cd /d "D:\Dropbox\Apps\powershell" @powershell .\copy_to_profile.ps1
      
      







プログラムをインストールするには、chocolateyを使用し、スクリプトが初期インストールを開始します。 最初に行うことは、chocolateyをダウンロードしてインストールすることですが、win10とOneGetで別のチェックを行う計画があります。

 Set-ExecutionPolicy RemoteSigned -Force iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
      
      







win10マシンでchocoを使用したくない場合は、パッケージがMicrosoftリポジトリに限定されないように、chocolateyリポジトリを信頼できるソースに追加する必要があります(chocolateyにはさらに多くのパッケージがあります)。



次に、私たちはあなたの好みにソフトウェアを入れます、ここに私のものがあります:





スクリプトで小さな自動ホットキーホットキー追加します。



 #k:: Run "C:\Program Files (x86)\KeePass Password Safe 2\Keepass.exe" #IfWinActive ahk_class CabinetWClass ; for use in explorer. ^!Space:: ClipSaved := ClipboardAll Send !d Sleep 200 ; In some cases timeout settings have to be adjusted Send ^c Run, powershell -noexit -command "$exist=Test-Path '%clipboard%'; if($exist){Set-Location '%clipboard%' }else{Set-Location 'c:\'}" Clipboard := ClipSaved ClipSaved = return #IfWinActive #IfWinNotActive ^!Space::Run, powershell -noexit -command "Set-Location 'c:\'" #IfWinNotActive
      
      







最初のものはwin + kを追加してkeepassを起動します。このデータベースはdropboxを介して同期されます。 そして、Ctrl + Alt + Spaceを介した2番目のホットキーは、管理者からpowershellを開きます(管理者なしでは、どういうわけかすべてが完全に無効化され、sudoの便利な類似物は見つかりませんでした)。 さらに、Explorerウィンドウがアクティブになっている場合、現在開いている場所とまったく同じ場所にコンソールが開きます。 ソリューションウィンドウからpsを開くことができるVisual Studioの便利な拡張機能: Open Command Lineもあります。 Hanselmanが彼について書いた。ここではVisual Studio用のQuake Modeコンソール-ホットキーでコマンドプロンプトを開く



そして、このスクリプトが管理者から正しく動作するために(もう一度、悔い改めますが、管理者の下で実行されているアプリケーションの自動ホッケーの助けなしで)、私が見つけた最も簡単な方法は、ログインタスクを実行することです:

 schtasks /Create /RU "Domain\Username" /SC ONLOGON /TN "autohotkey" /TR "D:\Dropbox\Apps\Autohotkey\runAutohotkey.exe" /IT /V1
      
      







それでは、アプリケーション設定の同期を始めましょう。 最初に同期するのはSublime Textです。 同期プロセスは、 ここで説明されています 。 tl; dr %AppData%\ Roaming \ Sublime Text 3 \ PackagesからUserフォルダーのドロップボックスフォルダーへのシンボリックリンクを作成します。



 cd %AppData%\Roaming\Sublime Text 3\Packages\ mklink /D User "d:\Dropbox\Apps\Sublime Text 3\User"
      
      







Visual StudioSQL Management Studioの設定を同期するには、 xmlの形式で設定をアップロードおよびロードするための標準ダイアログが使用されます。 主な問題は、生成されたxmlファイルがエクスポート時に指定されたすべての設定を単純にダンプすることであり、これはあまり有用ではありません。 標準の一般的な構成、またはスタジオのc#から継承して、設定を再定義します。これは2013年のVisual Studioで解決され、Visual Studioオンラインプロファイル(詳細msdn )の同期によって行われました。 しかし、2010、2013、2015を同期し、これらの設定を管理する必要がある場合は、特定の設定(ショートカット、テキストエディター設定)のいくつかの異なるダウンロードを実行し、デフォルトと比較する必要があります。 まあ、一般的にポルノ、そうでないと言わない。



当然、Sublime TextとWebStormで同じショートコードが必要ですが、標準的なソリューションはまだ見つかりません。 カラースキーム設定、タブ/スペース、その他のフォーマット設定を同期するための優れたプラグインがありますが、残念ながらホットキー同期をサポートしていません。 それでも、言及する価値があるのはEditorConfigoff.site )です。 プラグインは活発に開発されており、多くの人が見た/仕上げています。 スタジオ用の拡張機能も、私が見つけた唯一の同期方法です。拡張機能のvsixファイルを保存し、VSIXInstallerでインストールします。 起動ラインは次のとおりです。



 cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE" .\VSIXInstaller.exe "D:\Dropbox\Apps\Visual Studio\extensions\VSColorOutput.vsix"
      
      







しかし、以来 拡張機能は定期的に陳腐化しており、Dropboxにバイナリを保存するという考えは何となく私を感動させませんでした。Evernoteのリストを確認するよりも良いことはありません。



トピックからのわずかな逸脱。 スタジオの拡張機能に加えて、今でもvcmdのスクリプトを保存しています。 理論的には、 開発者が非常に積極的にvisual-studioタグに関する質問に答えているstackflowに保存しています。 いくつかの例:

ファイル内の現在の場所をコピーするコマンド

 using EnvDTE; using EnvDTE80; public class C : VisualCommanderExt.ICommand { public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) { EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection; if (ts == null) return; EnvDTE.CodeFunction func = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementFunction] as EnvDTE.CodeFunction; if (func == null) return; string result = DTE.ActiveWindow.Document.FullName + System.Environment.NewLine + "Line " + ts.CurrentLine + System.Environment.NewLine + func.FullName; System.Windows.Clipboard.SetText(result); } }
      
      





Jetbrainsのようなウィンドウフォーカスを失った場合のファイルの自動保存

 public class E : VisualCommanderExt.IExtension { public void SetSite(EnvDTE80.DTE2 DTE_, Microsoft.VisualStudio.Shell.Package package) { DTE = DTE_; System.Windows.Application.Current.Deactivated += OnDeactivated; } public void Close() { System.Windows.Application.Current.Deactivated -= OnDeactivated; } private void OnDeactivated(object sender, System.EventArgs e) { try { DTE.ExecuteCommand("File.SaveAll"); } catch (System.Exception ex) { } } private EnvDTE80.DTE2 DTE; }
      
      







PowerShellプロファイルを展開するために、次のスクリプトを作成しました。

 cd /d " "D:\Dropbox\Apps\powershell" @powershell .\copy_to_profile.ps1
      
      







スクリプト自体は次のコードです

 $scriptRoot = Split-Path $MyInvocation.MyCommand.Path $profileFileInfo = New-Object System.IO.FileInfo $PROFILE $profileExist = Test-Path $profile $modulesFolder = [System.IO.Path]::Combine($profileFileInfo.Directory,"Modules") if(-not ((Test-Path $profile) -AND (Test-Path $modulesFolder))) { Write-Host "Creating directories" New-Item -ItemType directory -path $profileFileInfo.Directory -ErrorAction SilentlyContinue New-Item -ItemType directory -path $modulesFolder } Copy-Item -Path $scriptRoot\Microsoft.PowerShell_profile.ps1 -Destination $profile Get-ChildItem Modules -Recurse |%{ Copy-Item $_.FullName -Destination $modulesFolder -Force} Write-Host "Profile was updated"
      
      







プロファイルスクリプトで行われること:コンソールのより悲惨な(;))色がインストールされ、Dropboxフォルダーからすべてのスクリプトとモジュールが読み込まれます。 これらのスクリプトでは、さまざまなスニペット、準備されたコマンドレット、その他の機能、モジュール( posh-gitなど)が用意されています。 時間が経つにつれて、このフォルダにスクリプトが適切にすでに蓄積されていたため、psを使用した効果的な作業は想像できませんでした。 ただし、このようなコマンドレットを作成した経験があまりない場合は、 microsoft scriptcenterでインタースクリプトを参照できます。 別の非常に便利なスクリプトツール: Script Browser&Script Analyzer 1.4



終了する代わりに小さなps。 記事自体は数年間パラグラフで書かれていたため、一部のデータは古くなっている可能性があります。 ホットキーの同期という未解決の質問から、誰もがレシピを持っている場合、私は非常に感謝します。 スタジオの別のスクリプトの問題も未解決です。 エクステンションは優れていますが、私の意見では39ドルでエクステンションに十分な量です(同じリシャーパーを100ドルで販売できます)。 主な作業環境のため、ユーティリティスタックオフセットは、.netスタックに偏りがあります。 私が理解しているのと同じWebStorm、IDEAについては、それら自体がコンピューター上の魔法と同期しており、カスタムキーをバインドしませんでした。



All Articles