同じフォルダにあるファイル(インストール時)を別のパスにコピーする必要が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
コピーするにはどうすればよいですか?directory
SourcePath
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