web-dev-qa-db-ja.com

Powershellサイレント/無人スクリプトでNotepad ++のデフォルトのインストールパスを変更する方法

PowerShellスクリプトを実行するときに、Notepad ++のデフォルトのインストールパスC:\Program Files\を、インストール先のドライブに変更するためのパラメーターがわかりません。サイレントインストールを実行しようとしていますが、手動で変更できません。

プログラムをE:ドライブにインストールするために追加できるパラメーターを誰かが知っていますか?

以下は私のコードと私がPowerShellで試みているものです。 -ArgumentListドライブをポイントできるかどうかを判断するために、E:パラメータをいじくり回してきましたが、今のところうまくいきません。これをWindows Server 2012でも実行しています。

function install-Notepadpp()
{
    $install="*PATH*\npp.6.6.2.Installer.exe"
    Start-Process -FilePath $install -ArgumentList '/InstallDirectoryPath:"E:\"','/S'  -Wait -Verb RunAs  
    Write-Host "Notepad++ has been installed." -ForegroundColor Green
}

##### This is Windows calling the function to install the script
install-Notepadpp
4
user38725

本当にインストールが必要ですか?開発用サイトにスタンドアロンパッケージがあり、どこにでもコピーできます。 「クールな」コンテキストメニューアドオンについては、手動で追加できるほど簡単です。

以下は、これを実行するために必要な手順の簡単な説明です。

  • Powershellでスタンドアロンパッケージのコンテンツを目的のフォルダーにコピーします。

  • Powershellを使用して新しいGUIDを生成する

    [guid] :: NewGUID()

  • GUIDを変数に書き留めます(後で参照できるようにするため))。

  • HKEY_CLASSES_ROOT\CLSID \の下に、残りのGUIDが追加されるのと同じ方法でGUIDエントリを追加します。

  • サブコンテナを作成しますInprocServer32およびSettings

  • InprocServer32の値を(Default)に設定し、NppShell_06.dllを直接指定するNotepad ++インストールパスに設定します(例:C:\ Program Files\Notepad ++\NppShell_06.dll)

  • ThreadingModel REG_SZエントリを追加し、その値をApartmentに設定します

  • Settingsサブコンテナで、値を適宜設定します。有効な値のリストについては、Notepad ++がインストールされているマシンを参照してください。最も「興味深い」ものは「パス」と「タイトル」です

  • 前に生成したGUIDエントリをサブコンテナ "ANotepad ++"のHKEY_CLASSES_ROOT *\shellex\ContextMenuHandlers \の(Default) valueに追加します

これでうまくいくはずです。私は私のマシンで上記をテストしませんでしたが、これは「手動の」インストールの問題を解決するだろうと確信しています。補足として、上記の「回避策」を気にする必要がないように、いくつかのサイレントインストール構成スイッチを追加することは、開発者への提案(または、最善の方法として、自分で書く!)として価値があります。 。この設定で問題が発生した場合は、お知らせください。

0
Koliat

Notepad ++インストーラーはNSISインストーラーシステムを使用します。そのデフォルトのスイッチを利用してそれを実現できます。

http://nsis.sourceforge.net/Which_command_line_parameters_can_be_used_to_configure_installers

例:npp.6.6.8.Installer.exe/S/D = d:\ software\npp

注:/ Dオプションは引用符をサポートしていません

4
Fabricio

確かに、@ Koliatの良い回避策ですが、わかりました。レジストリに移動して、C:\へのデフォルトパスを含む.regファイルをエクスポートし、すべてE:に変更しました。次に、エクスポートしたすべての.regファイルをマスター.regファイルに入れ、それをスクリプトから呼び出しました。

スクリプト行は:

regedit.exe /S nMaster.reg 

レジストリを考慮に入れて、あなたの助けに感謝し、正しい方向に私を押してください。

0
user38725