私が働いている会社はC ++ Builder 6を使用しています。私たちは構想以来、ネイティブコードを開発してきました。当社の主力製品は完全にネイティブコードで記述されています。
ベルとホイッスルで.NET Frameworkに入ります。私は転んで、引っ掛かって、線を引いて、シンカーします。.NETはすべての新しいソフトウェア開発のための新しいフレームワークであり、既存のコードラインをできるだけ早く移行する必要があることを経営陣に納得させます。すべてのメリットがあるため、説得力はあまりありません。彼らはいつものように私の提案を受け入れます。
この時点で、最初の.NETアプリケーションの開発を開始します。それはすべて計画どおりに進んでいます。プロジェクトは、当社の製品の1つのコンポーネントにすぎません。そして、この新しいコンポーネント用のインストーラーを作成するところまでたどり着きました。会社として、私たちはユーザーのために物事をできるだけ簡単にすることに誇りを持っています。何千人もの開発者を抱えるマイクロソフトでさえ、私たちのようにインストーラーを作成しません。たとえば、Microsoft CRMをインストールすると、続行する前にインストールが必要なエラーと前提条件のリストのみが表示されます。私たちではありません。決して。何か必要な場合はインストールします。
これにより、インストールがとても簡単になります。.NET Frameworkがインストールされていませんか?問題ない!私たちはあなたのためにそれをします。SQL Native Clientが必要ですか?いいね!
問題はこれです。ソリューションの1つのコンポーネントが.NETで記述されているため、インストールプロセスが非常に複雑になっています。製品をインストールする前に、次のことを行う必要があります。
前提条件がインストールされているかどうかを検出する
インストールされていない場合はインストールしてください
正常にインストールされたことを確認します
次の前提条件
.NET Frameworkをインストールするには、まずWindowsインストーラー4.5が必要です。しかし、OSごとに異なるバージョンがあるため、OS検出を追加して正しいEXEを起動します。ああ、.NETフレームワークはすでに2k8でパッケージ化されており、インストーラーexeはその上で実行できません。インストールするには、パラメーターを指定してOCSetup.exeを実行する必要があります。
そしてそれは続く。次に、SQL Express 2005をインストールする必要があります。依存関係は再び増加します。
私は、Microsoftでさえユーザーにとってこれを簡単にすることはできないと経営陣に主張します。彼らの反応は、私たちがこのように彼らより良くならない理由はないということです。彼らが彼らのアプローチを行った非常に正当な理由があると私が思うことを除いて、私はそれについて議論することはできません。
突然、私たちのインストーラは巨大になります。.NETのすべての前提条件。インストールするEXEの範囲全体が異なる64ビットのサポートについてさえ話していません。これで、ユーザーが「クイック」評価をダウンロードできるようになりました。なんて冗談でしょう。30MBのアプリケーションを実行するには、500MBをダウンロードする必要があります。インストールパッケージの大部分は前提条件です。
経営陣は、依存関係/前提条件が多すぎると感じています。私は完全に理解しています。彼らは、私たちが.NETフレームワークから離れて、インストールの点でまだ「簡単」であるネイティブの土地に戻ることを提案しています。これは、私の一部が.NETのために立ち上がって、全体像、改善された開発エクスペリエンス、容易なメンテナンス、および全体的なコード品質の利点を説明したいところです。私の他の部分は心から彼らに同意します!.NETでの開発では、インストールを複雑にする他の必須コンポーネントをインストールする必要があります。
はい、一部の.NET支持者は、すべてをパッチを適用して更新されたオペレーティングシステムにインストールする必要があると主張します。これは本当ですが、すべてのお客様がこれを持っているわけではありません。「申し訳ありませんが、最初に更新してください」と言っても問題は解決しません。ユーザーエクスペリエンス全体に誇りを持っていることを忘れないでください。
現在、ネイティブコードを再度作成することを検討しており、開発速度と.NETのすべての利点の点で私たちが失っていることを知っています。しかし、全体像を見ても小さくても、この分野で利益を得ています。ネイティブコード開発のスキルがあり、.NETは実際には私たちにとって新しい基盤であるため、前に戻ることも理にかなっています。
私の質問はこれです。この問題がまったく問題である場合、あなたの会社はこの問題についてどのように考えていますか。また、すべての製品を.NETに引き続き移行したいと仮定した場合、ビジネスケースはどのように見えますか?