同じフォルダにあるファイル(インストール時)を別のパスにコピーする必要がexeあります。msi installerこれを行うために、私はinstallerクラスで次のコードを書きました。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new
System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "xcopy";
startInfo.UseShellExecute = true;
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string SourcePath = Path.GetFullPath("C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin");
StreamWriter sw = new StreamWriter(@"C:\Users\lovestone\Desktop\data.txt");
sw.WriteLine(directory);
sw.WriteLine(SourcePath);
startInfo.Arguments = "\"" + directory + "\"" + " " + "\"" + SourcePath + "\"" + @" /e /y /I";
process.StartInfo = startInfo;
process.Start();
指定されたパス上に(インストール時に)installer作成されているため、クラスに問題はありません。ファイルをからにdata.txtコピーするにはどうすればよいですか?directorySourcePath
cmd代わりに使用する必要がありxcopyますか?
更新しました
先ほど申し上げましたように、exeとinstallerが存在する同じフォルダからファイルをコピーしたいと思います。アプリケーションをインストールするとき。エラーが表示されます:
Unable to find the file from "C:\Program Files (x86)\Default Company Name\inataller".
ディレクトリからファイルを選択しようとしていますprogram files。しかし、それは私の存在するディレクトリと同じである必要がありexeます。hard-coded他のクライアントに配布されるため、exeのパスは使用しません。同じフォルダからファイルを選択するための適切なコードは何ですか?
コードにいくつか変更を加えました
string directory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
string SourcePath = Path.GetFullPath("C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin");
File.Copy(Path.Combine(directory, "MyAdHocTestCert.cer"),Path.Combine(SourcePath, "MyAdHocTestCert.cer"));
今それは表示されています:Object reference not set to an instance of an object