質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

4回答

1065閲覧

「C#」「Visual studio」「Windows EXE実行ファイル」のリリースについての質問です

zatsudayo

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

1クリップ

投稿2019/03/18 23:37

編集2019/03/18 23:44

■「C#」「Visual studio」「Windows EXE実行ファイル」のリリースについての質問です

Visual studio(C#)でコンパイルした、
Windows EXE実行ファイルのリリースについて質問です。

バッチシステムとしてタスクスケジューラーで起動させますが、
頻繁にシステム改修があり、都度リリースが必要です。

しかし、システム実行中にリリース(EXEファイルの上書き)を行うと、
起動中のため上書きエラーとなります。

実行中のEXEに対して、
次回の実行分から最新のシステム改修を反映させるには、
どのようにしたら良いでしょうか?

以下私の案がございますが、スマートではありませんし、
実行開始に時間がかかるデメリットがございます。
他にスマートな案はございますでしょうか?

起動に関するフレームワークなどあるのでしょうか。

<案>
1.処理開始時に本体EXEファイルをコピーして実行版EXEファイルを作成する(同一のEXEファイル)
2.実行版EXEファイルを起動する
3.実行中でも本体EXEファイルは上書き可能なため、本体EXEファイルに対してリリース(EXEファイルの上書き)を行う

★補足★
未実行のタイミングを見計らって上書きリリースを行う、というのは無しです。
実行中の反映をどうするか、という意図です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

サーバーシステムでよくやるやり方として、システムを 2 系統用意しておき、更新する場合は 1 系統ずつ停止して上書きするというのがあります。

投稿2019/03/21 00:14

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

2段階にしては如何でしょうか?
タスクスケジューラーから起動されるものをA、そこから起動されるモジュールをBとします。

Aの処理
a)イニファイルを読込む(実行モジュールBの定義)
b)イニファイルで読み込んだモジュールBの実行

イニファイルへは
[exec]
exe=c:\tmp\b.exe
のような記載をする。

新たにモジュールを作成した場合は、フォルダ名を変えてイニファイルを書き換える
[exec]
exe=c:\tmp2\b.exe

これであれば、Aモジュールが起動されたタイミングでイニファイルを参照するので上書きを意識しなくてもよいかと。
また、バージョンごとにフォルダを作成すれば戻すことも可能です。

c:\tmp\v1.00\b.exe
c:\tmp\v1.10\b.exe
c:\tmp\v2.00\b.exe

投稿2019/03/19 00:16

red_bb

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

タスクスケジューラで起動するバッチプログラムということなら、例えば「最新版の置き場」を用意しておいて、プログラムが起動するときに自動的にそれを引っ張ってきて上書きする、とかでもいいのではないでしょうか。

投稿2019/03/19 00:05

tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

movefile で次回再起動時の移動予約してみてはどうでしょうか?

使用中のファイルをmovefileコマンドで次回起動時に削除する

投稿2019/03/18 23:44

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zatsudayo

2019/03/18 23:49

ご回答ありがとうございます。こちらの方法だと、上書き可能になったタイミングではなく、 再起動したタイミングで実行されるようです。 当環境はサーバ環境なので、再起動は行えません。 起動中に実現できる方法はないでしょうか?
Zuishin

2019/03/18 23:59

質問を読み間違えていたかもしれません。 それではアプリを起動する時に最新バージョンがあるかどうかチェックし、あるならインストールするようにすればどうでしょうか? たとえば ClickOnce を使えば簡単です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問