C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[23]: 設定ごとにビルド内容を分けたい VS2005


(過去ログ 32 を表示中)

[トピック内 28 記事 (1 - 20 表示)]  << 0 | 1 >>

■15583 / inTopicNo.1)  設定ごとにビルド内容を分けたい VS2005
  
□投稿者/ もんきっき (6回)-(2008/03/16(Sun) 22:07:24)

分類:[.NET 全般] 

VB.NETでソフトを作っています。
エクセルを参照設定したところ、突然インストーラのファイルサイズが馬鹿でかくなってしまい
なぜかと思って調べてみるとexcel.exeがファイルに追加されていました。

エクセルを参照するタイプと
エクセルを参照しないタイプに分けたいのですが
同じプロジェクトで、タイプ毎に簡単に設定を切り替える方法があれば
教えていただきたいのですが、よろしくお願いします。

引用返信 編集キー/
■15598 / inTopicNo.2)  Re[1]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ ぽぴ王子 (329回)-(2008/03/17(Mon) 09:17:24)
ぽぴ王子 さんの Web サイト
No15583 (もんきっき さん) に返信

> エクセルを参照するタイプと
> エクセルを参照しないタイプに分けたいのですが
> 同じプロジェクトで、タイプ毎に簡単に設定を切り替える方法があれば
> 教えていただきたいのですが、よろしくお願いします。

参照するタイプと参照しないタイプを分けるってのがよくわからんですが。
インストーラのファイルサイズが大きくなったのは、セットアップウィザード
が excel.exe を「実行に必要なファイル」とみなしてプロジェクトに追加
してしまったからですよね。
で、excel.exe をインストーラファイルに入れていいかと言われたら「NO」
しかないと思うので(実行ファイル単体で動かせるものでもないだろうし
ライセンス的にもNGでしょう)プロジェクトファイルから excel.exe の参照を
外してインストーラファイルを作ればいいんじゃないかと思います。

もしかしたら私が誤解しているかもしれないので、参照するタイプと参照しない
タイプに分けたいという理由を教えていただければと思います。
引用返信 編集キー/
■15653 / inTopicNo.3)  Re[2]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (7回)-(2008/03/17(Mon) 20:32:23)
> もしかしたら私が誤解しているかもしれないので、参照するタイプと参照しない
> タイプに分けたいという理由を教えていただければと思います。

最小インストール版と
標準インストール版で

最小インストールではエクセルを使わない
標準インストールではエクセルを使う

ということを考えています。
インターネット上でダウンロードできるサイズで考えると
数メガの差が大きいので、インストーラを分けたいと考えています。
その都度設定を変更すればいいのでしょうが、間違いの元なので、
ひとつのプロジェクトでインストーラ設定を二つ作れないかな
と考えています。

引用返信 編集キー/
■15661 / inTopicNo.4)  Re[3]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ Azulean (30回)-(2008/03/17(Mon) 23:29:46)
> 最小インストールではエクセルを使わない
> 標準インストールではエクセルを使う
これは標準インストール版では"excel.exe"が含まれていると言うことですか?
いずれの形態にせよ、"excel.exe"を他人に配布することはOfficeあるいはExcelのライセンス違反です。
引用返信 編集キー/
■15669 / inTopicNo.5)  Re[4]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (8回)-(2008/03/18(Tue) 06:23:43)
No15661 (Azulean さん) に返信
>>最小インストールではエクセルを使わない
>>標準インストールではエクセルを使う
> これは標準インストール版では"excel.exe"が含まれていると言うことですか?
> いずれの形態にせよ、"excel.exe"を他人に配布することはOfficeあるいはExcelのライセンス違反です。

excel.dllかもしれませんが
ビルドすると、勝手に含まれているのですが
これを含まなくても正常に動作するものなのでしょうか。
今までVB6を使ってたときは、何も考えずにできていたのですが
VB.NETの仕組みがよくわかってなくてすみません

引用返信 編集キー/
■15671 / inTopicNo.6)  Re[5]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ Azulean (31回)-(2008/03/18(Tue) 07:02:11)
> excel.dllかもしれませんが
> ビルドすると、勝手に含まれているのですが
> これを含まなくても正常に動作するものなのでしょうか。
何をするために、どのような操作をした結果、excel.exe or excel.dllが含まれるようになったのでしょうか?
直接の原因が分からなくとも、何をしたい、何をしているといった情報を提示するべきです。

現状の情報では全く分かりませんので、アドバイスを得ることが難しいと思います。
引用返信 編集キー/
■15685 / inTopicNo.7)  Re[6]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ myugaru (52回)-(2008/03/18(Tue) 13:29:16)
myugaru さんの Web サイト
No15671 (Azulean さん) に返信
横から口をはさませてもらいますが、

>□投稿者/ もんきっき (7回)-(2008/03/17(Mon) 20:32:23)
>最小インストール版と
>標準インストール版で

>最小インストールではエクセルを使わない
>標準インストールではエクセルを使う

>ということを考えています。

ということだそうです。
さらに最初の質問も見直してみると
「最小インストール版のみ作ってください」で良いと思われます。
もう標準の方の突っ込み・追求は不要だと思われます。

もんきっきさんはご自分でどう思われますか?

引用返信 編集キー/
■15688 / inTopicNo.8)  Re[5]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ はつね (516回)-(2008/03/18(Tue) 14:01:36)
はつね さんの Web サイト
No15669 (もんきっき さん) に返信
>>これは標準インストール版では"excel.exe"が含まれていると言うことですか?
>>いずれの形態にせよ、"excel.exe"を他人に配布することはOfficeあるいはExcelのライセンス違反です。
>
> excel.dllかもしれませんが
> ビルドすると、勝手に含まれているのですが

世の中にはライセンス的に配布してよいものと悪いものがあります。
勝手に含まれるのではなく、インストーラ作成時に自動的に含まれるだと思いますので、自動的に含まれたファイルが配布してよいかどうかは必ず確認して配布してまずいものは手動で外してください。


> これを含まなくても正常に動作するものなのでしょうか。

含まなくても正常に動作するように作成するか、事前インストールするなど該当ソフトのライセンスにあった配布をおこなって下さい。
それに正確なファイル名とかが分からないと「それ不要」とか「それ必要」なんて判断は誰にも分からないです。



引用返信 編集キー/
■15693 / inTopicNo.9)  Re[6]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ まどか (495回)-(2008/03/18(Tue) 17:15:38)
たぶん、ライセンスのこととかExcel.exeがExcel本体だとかそういう理解がないのだと思います。

インストーラは単純に必要なものを追加しようとします。>動作するために必要であるからです。
しかし、今回の場合はExcel.exeはExcel製品そのものですので、単体で配布することは許可されません。
したがって、インストーラプロジェクトから削除する必要があります。
言い換えると導入先にOfficeがインストールされていることという動作要件の話になります。
また、Interop〜.dllはOfficeへプログラムからアクセスするためにFrameworkが用意した必要なラッパであり
動作させるために配布する必要があります。

なので、今回は標準インストールや最小インストールという形態にはなりません。

引用返信 編集キー/
■15697 / inTopicNo.10)  Re[7]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ はつね (518回)-(2008/03/18(Tue) 20:14:05)
2008/03/18(Tue) 22:24:44 編集(投稿者)

実際にVB2005でExcelとCOM連携するサンプルアプリを作成して、それに対するセットアッププロジェクトを作成し、msiファイルをビルドしてみました。

結論からいえば、そのときに自動的に設定されるのは次の3つでありこれはOfficeプライマリ相互運用機能アセンブリです。
・Microsoft.Office.Interop.Excel.dll
・Microsoft.Vbe.Interop.dll
・office.dll

なお、Excel2007の場合だと、Officeプライマリ相互運用機能アセンブリを含んだときのmsiファイルは821KBになりました。Officeプライマリ相互運用機能アセンブリを除外したmsiファイルは318KBですから約500KBくらいのファイル容量増になります。

この500KBのファイル増を避けたいという事でしょうか。
それとも何か自動的ではない別の事をしてライセンス的に違反したファイルを含んでしまってファイルがもっと大きくなっている状況なのでしょうか。

# 質問時に上記のように具体的にファイルサイズなどを明記して質問すると単に「大きくなった」
# では伝わりづらい情報も伝えることができます。

[追記]
なお、プライマリ相互運用機能アセンブリがあっても配布先にExcelがインストールされていなければ動きません。

また、プライマリ相互運用機能アセンブリ(PIA)ですが、配布先の環境を壊す可能性が高いためセットアップからは外しておき、配布先のOfficeのインストール時にPIAもインストールしてしまうのが良いようです。

http://www.microsoft.com/japan/msdn/office/office2003/OfficePrimaryInteropAssembliesFAQ.aspx
より引用
----------------------------ここから
セットアップには PIA を含めないようにしてください。Office 2003 PIA をセットアッププロジェクトに含めると、エンドユーザーのコンピュータの Office 2003 所有権や PIA コンポーネントの登録が破損することがあります。その結果、アンインストール中に Office 2003 所有権や PIA コンポーネントの登録がエンドユーザーのコンピュータから誤って削除されることになります。
----------------------------ここまで
引用返信 編集キー/
■15700 / inTopicNo.11)  Re[8]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ とっちゃん (257回)-(2008/03/18(Tue) 22:29:21)
とっちゃん さんの Web サイト
CCW の Interop.〜.dll なら添付でOKですが、PIAや、その先(excel.exeなどなど)は、通常再配布不可です。

インストーラの作成時点での判断基準ですが、
1.そのファイルが自分(自社)で作ったもの(たとえ別ソリューションであったとしても)
2.なにも設定を施していないがプロジェクトの出力先(Obj\Release や Bin\Release)にあるもの
のどちらにも属さない場合、msiに含めて配布することはできません。

要するに、GACにいたり、C:\Program Files\...のどこかにいるようなものは通常はそのままでは配布できないということです。

製品によっては、PIAだけ配布可能というものもあるかもしれませんが(ベンダーの意向次第)、Officeではそのような条件は用意していませんので、msi(必須コンポーネントも含め)で配布することはできません。

引用返信 編集キー/
■15701 / inTopicNo.12)  Re[9]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ とっちゃん (258回)-(2008/03/18(Tue) 22:30:11)
とっちゃん さんの Web サイト
No15700 (とっちゃん さん) に返信

あ、書いてる間にはつねさんが追記してたw

引用返信 編集キー/
■15702 / inTopicNo.13)  Re[10]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ はつね (519回)-(2008/03/18(Tue) 22:57:41)
No15701 (とっちゃん さん) に返信
> あ、書いてる間にはつねさんが追記してたw

http://www.microsoft.com/japan/msdn/office/office2003/OfficePrimaryInteropAssembliesFAQ.aspx
には次のような文もありますね。
--
どのような場合でも、ソリューション セットアップ パッケージで Microsoft Office 2003 PIA を再配布しないでください。Office 2003 が、Office 2003 PIA の唯一の配布メカニズムです。
--
ここに「ライセンス的にも違反だからダメ」って明記してくれるとわかりやすいのに。

引用返信 編集キー/
■15704 / inTopicNo.14)  Re[11]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (9回)-(2008/03/19(Wed) 06:44:53)
みなさま、わかりやすいご説明をありがとうございます
とんでもないことをしようとしていたようです。
こちらの思いとしてもエクセルを配布する意図はなく、
エクセルがインストールされていない環境での動作は望んでいません

>「最小インストール版のみ作ってください」で良いと思われます。
とはいうものの、これではVB.NETでエクセルベースのソフトは作れないことになりませんか?
エクセルのインストールされている環境でエクセルの機能を使える方法を検討したいです。

現在普通に依存関係を更新すると現在Excel.Exeが自動的に生成されています
それで、インストールフォルダからをExcel.Exeを削除すると、エクセルの機能というよりもアプリケーションそのものが動かなくなりました

上記参考アドレスがすっきり理解できない内容もあるのですが
結論としては、
エクセルの機能を実装したVB.NETのソフトを使うには
ユーザーは、それ相応の手間をかけたインストールが必要になるということなのでしょうか。


引用返信 編集キー/
■15705 / inTopicNo.15)  Re[12]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ はつね (520回)-(2008/03/19(Wed) 07:02:10)
No15704 (もんきっき さん) に返信
> 現在普通に依存関係を更新すると現在Excel.Exeが自動的に生成されています

その状態は「普通」の状態ではありません。

よって、msiをビルドするときの問題ではなく、アプリからExcelを使う方法に問題があると考えます。
例えば、依存関係への追加は実は手動でやっていて、ExcelとCOM連携しているのではなくExcel.exeを直接起動していてExcel.exeのある場所が決め打ちになっているなどが想定されます。

あまりにも普通ではない状況なので、アプリからのExcelの使い方(参照設定の内容)などの情報がないとどこが悪くてそんな事が発生しているか見当もつきません。

引用返信 編集キー/
■15706 / inTopicNo.16)  Re[12]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ Azulean (32回)-(2008/03/19(Wed) 07:05:34)
> エクセルのインストールされている環境でエクセルの機能を使える方法を検討したいです。
ここで言う「エクセルの機能」とは何を指すのでしょうか?

一例
・アプリケーション内にExcelが表示される?
・アプリケーションからExcelが起動される?
・アプリケーションからExcelを操作して、セル等を編集する?

> 現在普通に依存関係を更新すると現在Excel.Exeが自動的に生成されています
> それで、インストールフォルダからをExcel.Exeを削除すると、エクセルの機能というよりもアプリケーションそのものが動かなくなりました
「普通に」というのが分かりません。
どのような操作を行ったのですか?
「参照設定でこのファイルを追加して、コードをこう書いた」等の情報があると、どういったことがやりたいか、どういった操作が適切なのかといったアドバイスが得られる可能性があると思います。
引用返信 編集キー/
■15707 / inTopicNo.17)  Re[13]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (10回)-(2008/03/19(Wed) 08:14:45)
どのように、エクセルを使っているかといわれると難しいですが
http://www.bcap.co.jp/hanafusa/dotnet/Excel01.htm
などに記載されている内容を参考にして、
エクセルファイルのコピー、セル内容の書き換え、上書き保存といった処理をしています。
ただ、excel.exeが含まれるのが、普通ではないということであれば、
何か変なコードが混じっているということと思うので調べてみます。

ただ、教えていただきたいのですが
結論的にエクセルをvb.netを使うには、
「エクセルのバージョン毎にアセンブリ及びそのインストーラを作る必要がある」
「アセンブリのインストール時にユーザー毎にエクセルの追加機能(PIA)のインストールが必要になる」
ということになるのでしょうか。
ということであれば、メンテナンスやサポートを考慮すると、
VB6でdllを作って動かすほうが、よほど現実的に思えますが、実際そのような運用になる場合が多いのでしょうか。

重ね重ねの不勉強な質問申し訳ありません。
引用返信 編集キー/
■15708 / inTopicNo.18)  Re[14]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ はつね (521回)-(2008/03/19(Wed) 08:44:47)
はつね さんの Web サイト
No15707 (もんきっき さん) に返信
> 結論的にエクセルをvb.netを使うには、
> 「エクセルのバージョン毎にアセンブリ及びそのインストーラを作る必要がある」
> 「アセンブリのインストール時にユーザー毎にエクセルの追加機能(PIA)のインストールが必要になる」
> ということになるのでしょうか。

VB2005からExcelをCOM連携して操作するためにはExcel関連のPIAが必要になります。
.NET FrameworkがインストールされているところにExcelをインストールしているときは(オプションにもよりますが)、正式なExcel関連PIAも
インストールされます。よって、プログラムの配布時にはExcel関連PIAすら要りません。
ExcelしかインストールされていないときはExcelインストール時にOfficeのPIAがインストールされないようですから、.NETアプリと同時に.NET FrameworkもインストールするのであればExcel関連PIAの導入についても考えなければなりません。

なお、Excelのバージョンごとにどうすればいいかはタイプライブラリに互換性があるかどうかに繋がってきますので、VB2005でもVB6でも同じです。


> ということであれば、メンテナンスやサポートを考慮すると、
> VB6でdllを作って動かすほうが、よほど現実的に思えますが、

VB6で作成したDLLやEXEを動かすためには動作環境にVB6のランタイムが必要です。またActiveX DLLであればレジストリ登録などの作業も必要です。
.NET Frameworkはランタイムみたいなものですから、きちんとランタイムが設定されているのならば、EXEやDLLはファイルコピーだけで動作させる事も可能ですので、ランタイムが配布されているという前提が同じならばどちらが現時的かは自ずと明らかだと思います。

引用返信 編集キー/
■15744 / inTopicNo.19)  Re[15]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (11回)-(2008/03/19(Wed) 21:10:31)
はつね様
> なお、Excelのバージョンごとにどうすればいいかはタイプライブラリに互換性があるかどうかに繋がってきますので、VB2005でもVB6でも同じです。
> VB6で作成したDLLやEXEを動かすためには動作環境にVB6のランタイムが必要です。またActiveX DLLであればレジストリ登録などの作業も必要です。

PIAの仕組みをようやく飲み込めてきたのですが
.NETの長所である「デルヘルが起こらないように」
という観点からいうと、全く逆行しているような仕組みですよね

ただ下記のホームページを読んでの解釈なのですが
=================================================================
http://blogs.wankuma.com/iijimas/archive/2007/10/06/100227.aspx
=================================================================
開発環境:下位
実行環境:上位 ならokなのででしょうか

そうであれば、エクセル2000で開発すれば、
インストーラは1種類ですみますが
これがダメなら、少なくともエクセルのバージョンの数だけ
開発環境が必要になるということなのですよね?







引用返信 編集キー/
■15747 / inTopicNo.20)  Re[16]: 設定ごとにビルド内容を分けたい VS2005
 
□投稿者/ はつね (524回)-(2008/03/19(Wed) 22:03:01)
2008/03/19(Wed) 22:40:35 編集(投稿者)

No15744 (もんきっき さん) に返信
> PIAの仕組みをようやく飲み込めてきたのですが
> .NETの長所である「デルヘルが起こらないように」
> という観点からいうと、全く逆行しているような仕組みですよね

PIAというのは.NETの世界とCOMの世界を橋渡ししますので、.NETの長所が生かせないケースも多いはずです。
もしかしたらVSTO (Visual Studio Tools for Office)を使うともっと楽かも知れませんが、使ったことないので分かりません。


> 開発環境:下位
> 実行環境:上位 ならokなのででしょうか

Excelのタイプライブラリが上位互換かどうかは、Excelのバージョンで異なると思います。
Office2003とOffice2007であればできそうな感じもしますが確認とれていません。
ただし、障害発生時の問題切り分けを考えると開発環境と実行環境が異なるような開発は行わない方がいい(わたしは行わないです)ですし、せめて実行環境に対応したテスト環境は用意すべきかと思います。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -