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

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

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

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

Q&A

2回答

890閲覧

制作したアプリからアプリを作るには

siaron

総合スコア8

Windows

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

0グッド

1クリップ

投稿2018/05/24 10:37

自作ツールで制作してそこからexeにしたいのですがどうすれば出来るでしょうか、gccやパッチをインストールさせるとか、コンパイラーを作るかでしょうか?

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

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

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

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

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

mather

2018/05/24 10:43

タイトルからしてわかりにくいですが、「作成したアプリを配布できるパッケージにしたい」ということでしょうか?言語名と「配布」、「パッケージ」などを組み合わせて検索してみましたか?
mather

2018/05/24 10:46

もし、コンパイルして手元で実行できていない状況でしたら、まずは配布などの方法考える前に実行できるアプリケーションを作るところからです。
guest

回答2

0

前提

条件が不足しているので、以下の要件からC# と仮定し、回答いたします。

  • 言語に制約がない
  • exe形式であるため、Windows環境で利用できるもの
  • Windowsのバージョンは問われていない(XP以前は切り捨て)

概要

.NET ではCSharpCodeProvider - プログラムからソース・コードをコンパイルして実行するには? を用いて、.NETランタイムのみでソースコードからexeを生成することができます。
※CSharpCodeProvider はcscへのラッパーで、cscに対するコマンドをほぼ網羅しています。
ウイルス対策ソフトウェアとは不仲になる可能性がありますが、非常に有用な機能が盛り込まれています。

ノウハウ

いくつか注意点として、インメモリコンパイルを行った場合、構文エラーなどのコンパイルエラーの行数が分からなくなります。多数の人に使用してもらう場合は、エラーメッセージの考慮をする必要があります。
lineプラグマを使用して出力される行番号の制御を試みましたが、該当行を挿入することによる行数計算が狂うため、1行目にすべてを詰め込む手法が最善でした。

また、ビルドしたライブラリから外部アセンブリをコールしたいことがありますが、実行バイナリと同じディレクトリに配置するようにしてください。さもなくば、絶対パスで記載することになります。

ファイルを出力する場合、後始末をしたくなるでしょうが、一度読み込まれたライブラリやexeは、プロセスがなくなるまで、解放されません。これを回避するには、ビルドしてから実行する際に、プロセスを監視して、プロセスが消えたら関連するファイルを削除することで対応することが可能です。
AppDomainのアンロードについて考慮される方がいらっしゃるかもしれませんが、.NET 4.5において確認した結果、例外発生時にアンロードが不可能になる現象を確認しているため、あまりお勧めできません。ゲストAppDomain空間での例外が発生した場合に、遭遇しました(※)。回避策はなく、ゲストAppDomain空間で例外を握りつぶしても防げませんでした。
※pdbを削除することができなくなりました
参考1: Why isn’t there an Assembly.Unload method? - stackoverflow経由
参考2: AppDomain と動的読み込み

なお、CSharpCodeProvider を用いて、複数のファイルやクラスをビルドすることが可能です。

投稿2018/08/02 17:00

testset

総合スコア221

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

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

0

その自作ツールがどういうもんかわからんとなんとも言えませんが、
自作ツールを含めた動作環境一式をまとめて自己解凍ファイルに圧縮しといて、
解凍と同時にそいつを実行するような環境をつくればいけるんではないかと。

投稿2018/05/24 11:10

編集2018/05/24 11:11
y_waiwai

総合スコア87749

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問