From: ttp Date: Thu, 3 Jul 2008 11:21:45 +0000 (+0000) Subject: na-get-lib,exeのインストーラもパッケージリストの要素を指定することでサイレントインストールできるようにした。 X-Git-Tag: v1.1.0~54 X-Git-Url: http://git.sourceforge.jp/view?p=applistation%2FAppliStation.git;a=commitdiff_plain;h=28244d25caea176161ae04c320f561938de9835d na-get-lib,exeのインストーラもパッケージリストの要素を指定することでサイレントインストールできるようにした。 git-svn-id: http://localhost/svn/AppliStation/trunk@931 34ed2c89-c49f-4a4b-abdb-c318350108cf --- diff --git a/na-get-lib/NaGet.Packages.Install/Installation.cs b/na-get-lib/NaGet.Packages.Install/Installation.cs index 229b428..869b481 100644 --- a/na-get-lib/NaGet.Packages.Install/Installation.cs +++ b/na-get-lib/NaGet.Packages.Install/Installation.cs @@ -136,6 +136,8 @@ namespace NaGet.Packages.Install case InstallerType.ARCHIVE: case InstallerType.MSI_PACKAGE: return true; + case InstallerType.EXEC_INSTALLER: + return ! string.IsNullOrEmpty(InstalledPackage.SilentInstallArguments); default: return false; } @@ -214,7 +216,11 @@ namespace NaGet.Packages.Install try { switch (type) { case InstallerType.EXEC_INSTALLER: - hProcess = Process.Start(installerfile); + if (Silent) { + hProcess = Process.Start(installerfile, InstalledPackage.SilentInstallArguments); + } else { + hProcess = Process.Start(installerfile); + } break; case InstallerType.MSI_PACKAGE: @@ -273,7 +279,6 @@ namespace NaGet.Packages.Install } } - int exitCode = invokeInstaller(installerFile, InstalledPackage.Type); installed = true; diff --git a/na-get-lib/NaGet.Packages/Package.cs b/na-get-lib/NaGet.Packages/Package.cs index ee12ee3..3cca05e 100644 --- a/na-get-lib/NaGet.Packages/Package.cs +++ b/na-get-lib/NaGet.Packages/Package.cs @@ -69,7 +69,7 @@ namespace NaGet.Packages /// public InstallerType Type; - /// + /// /// インストーラが書庫内に入っているかのフラグ /// public bool ArchivedInstaller = false; @@ -80,6 +80,13 @@ namespace NaGet.Packages public string UninstallerKey; /// + /// サイレントインストールのための引数。 + /// インストーラ形式のみ有効で、nullもしくは空文字列の場合は + /// サイレントインストールができないことをあらわす + /// + public string SilentInstallArguments; + + /// /// インストールスクリプト(MSBuildドキュメント) /// public string InstallScript; diff --git a/na-get-lib/NaGet.SubCommands/NaGetInstall.cs b/na-get-lib/NaGet.SubCommands/NaGetInstall.cs index 0e5dd72..e000ff7 100644 --- a/na-get-lib/NaGet.SubCommands/NaGetInstall.cs +++ b/na-get-lib/NaGet.SubCommands/NaGetInstall.cs @@ -118,9 +118,15 @@ namespace NaGet.SubCommands } foreach (Installation inst in Installations) { - RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, inst.ToString()); + string installTaskMsg = inst.ToString(); + if (inst.Silent && (!inst.SupportsSilentOnly)) { + installTaskMsg += " (ƒTƒCƒŒƒ“ƒgƒCƒ“ƒXƒg[ƒ‹)"; + } + + RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, installTaskMsg); try { + inst.ErrorDataReceived += this.ReceivedErrorData; inst.OutputDataReceived += this.ReceivedOutputData; int exitCode = inst.Install(); @@ -136,7 +142,7 @@ namespace NaGet.SubCommands } currentTaskSetIndex ++; - RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, inst.ToString()); + RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, installTaskMsg); if (cancelCalled) { RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "ƒpƒbƒP[ƒW‚̃Cƒ“ƒXƒg[ƒ‹ˆ—‚ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½");