1.はじめに
本記事では「Windows - レガシ」から「Windows」プロジェクトへのマイグレーションの方法や影響等を以下に記載しております。
読み進めて頂き、条件に合った対応を行ってください。
2.対象
本記事は「Windows – レガシ」 プロジェクトを利用しているUiPath Studio・StudioXのユーザーを対象としています。
3.UiPath の各プロジェクトについて
UiPath Studioで開発するオートメーションプロジェクトは、対応OSにより「Windows-レガシ」、「Windows」、「クロスプラットフォーム」の3種類があります。
3.1.対応OS:「Windows - レガシ」
Studio 2021.4以前で開発したオートメーションプロジェクトは全て「Windows - レガシ」 プロジェクトです。
.NET Framework(4.6.1以降)で実行され、Windowsマシンでのみ実行できます。
3.2.対応OS:「Windows」、「クロスプラットフォーム」
「Windows」プロジェクトおよび「クロスプラットフォーム」プロジェクトを開発・実行できるのは、Studio v2021.10以降です。
「Windows」プロジェクトはWindowsマシンでのみ実行でき、「クロスプラットフォーム」プロジェクトはWindows、Linux、macOS (64 ビット)いずれのマシンでも実行できます。
実行に必要となる.NETランタイムはStudioに同梱されており、別途インストールは不要です。
利用するランタイム:
- Studio 2021.10.3 - 2021.10.5: .NET 5
- Studio 2021.10.6 - 2023.10.x: .NET 6
- Studio 2024.10.1以降:.NET 8
参考:
リリースノート Studio 2021.10.6
ー抜粋ー
Studio が .NET 6 を使用するようになりました。
参考:
「Windows -レガシ」 プロジェクトの非推奨化
4.マイグレーションのメリット
「Windows」プロジェクトにマイグレーションするメリットとして以下がございます。
4.1. 最新の.NETランタイムの利用
「Windows」プロジェクトでは、Studioのバージョンに応じた最新の.NETランタイム(.NET 5, .NET 6, .NET 8)を使用できます。
これにより、新機能の利用やパフォーマンス向上が期待できます。
4.2. パフォーマンスの向上
「Windows」プロジェクトでは、ワークフローがパブリッシュ時にコンパイルされるため、実行時のパフォーマンスが向上します。
4.3. セキュリティの強化
最新の.NETランタイムを使用することで、セキュリティパッチや更新が適用されやすくなり、セキュリティが強化されます。
4.4. 新しいアクティビティパッケージの利用
「Windows」プロジェクトでは、AI関連の新しいアクティビティパッケージや新機能が利用可能であり、これにより開発の幅が広がります。
5.対応OSの確認方法
5.1. Orchestratorから確認
Orchestratorテナント > パッケージ画面、およびOrchestratorフォルダー > プロセス画面の「対応OS」列でご確認いただけます。
5.2. Studioから確認
プロジェクトパネル、およびStudio右下部でご確認いただけます。
5.2.1.「Windows - レガシ」プロジェクトの例
5.2.2.「Windows」プロジェクトの例
5.2.3.「クロスプラットフォーム」プロジェクトの例
5.3. project.jsonファイルから確認
プロジェクトフォルダー内のproject.jsonファイルの"targetFramework"を確認頂くことで対応OSの確認が可能です。
以下の画像では、「Windows-レガシ」プロジェクトを利用していることが確認できます。
なおproject.jsonファイルの直接編集はサポートしていないことにご留意ください。
参考:
Project.jsonファイルについて
"targetFramework"の値:
“Legacy”->「Windows-レガシ」プロジェクト
“Windows”->「Windows」プロジェクト
“Portable”->「クロスプラットフォーム」プロジェクト
6.マイグレーション前のチェック
ワークフローアナライザーはプロジェクトが高品質と信頼性の基準を確実に満たせるようにする静的コード アナライザーです。
以下の手順で「Windows」プロジェクトに対応していない式のチェックを行います。
参考:
ワークフローアナライザーについて
6.1.ワークフローアナライザーでST-PMG-002のチェックを入れてください。
「Windows」プロジェクトに対応していない式を検出します。
参考:
ST-PMG-002
※上記方法はStudio v24.10で利用可能です。
6.2.[ファイルを分析] をクリックすると、「Windows」プロジェクトに対応していない式がある場合、検出して出力パネルに表示します。
6.3.以下の記載に基づいて構文を編集ください。
参考:
「Windows - レガシに対応するプロジェクトについて > Windows - レガシ プロジェクトを Windows 対応のプロジェクトに変換する」
※既知の制限事項に記載があります。
変更箇所は以下となります。
7.「Windows - レガシ」プロジェクトから「Windows」プロジェクトへのマイグレーション方法
7.1. Studioで「Windows - レガシ」のワークフローを開き、プロジェクトパネルでプロジェクトを右クリックし、[Windowsに変換]を押下します。
7.2. 「新しいプロジェクトを作成する」というメッセージと [変換]というボタンが表示されます。
「新しいプロジェクトを作成する」にチェックを入れることで、「Windows - レガシ」プロジェクトを残したまま新しい「Windows」プロジェクトを作成することが可能です。
※「新しいプロジェクトを作成する」にチェックを入れないと、「Windows - レガシ」プロジェクトがそのまま変換されてしまい後から切り戻すことができなくなるのでご注意ください。
※念のため別途バックアップを取ることを考慮ください。
「新しいプロジェクトを作成する」というメッセージにチェックを入れて、[変換]というボタンを押下ください。
7.3.「プロジェクトを移行しています」メッセージと「プロジェクトに検証エラーがないか確認しています」メッセージが表示されます。
※プロジェクトのサイズや依存関係のあるアクティビティパッケージのご利用数にもよりますが移行には数分要します。
検証エラーが発生した場合、出力されたエラー内容に基づきワークフローの修正を行ってください。
7.4.「Windows」プロジェクトに変換されました。依存関係(Windows)という表記から変換が確認できます。
7.5.プロジェクトの保存パス(C:\Users\ユーザー名\Documents\UiPath)に変換した「Windows」プロジェクトが保存されます。
■StudioXでのマイグレーション方法
StudioX v23.10.0以降のバージョンで「Windows - レガシ」プロジェクトのマイグレーションを行う場合、StudioX ウィンドウの上部リボンから [プロジェクト] > [Windows に変換] を選択することで可能です。
参考:
※StudioX v23.10.0より前のバージョンで「Windows - レガシ」プロジェクトのマイグレーションを行う場合、一度Studioで開いた後に、上記と同様の方法で「Windows」プロジェクトにマイグレーションください。その後、StudioXでご利用ください。
8.マイグレーション後のテスト
8.1. 「Windows」プロジェクトへの変換後に、動作確認のためにStudioでワークフローをデバッグしてください。
8.2. デバッグして問題なければ、StudioからWindowsプロジェクトをパブリッシュしてください。
8.3. 再パブリッシュ後にロボットから実行した時も問題ないか、動作確認します。
Orchestratorフォルダーのプロセス画面で、利用するパッケージバージョンを新しいバージョンに変更してから、Orchestratorからの無人実行やAssistantからの有人実行をお試しください。
参考:
フォルダー内のプロセスを更新する
実行時にエラーが発生した場合、出力されたエラー内容に基づきワークフローを修正します。
9.既知の注意事項
9.1. 「Windows」プロジェクトに未対応のアクティビティパッケージが存在する
【Studio・StudioX両方】
アクティビティによっては、「Windows」プロジェクトに対応したバージョンが存在しません。
「Windows」プロジェクト未対応のアクティビティの例:
UiPath.Mail.Activities v1.21.1未満の以下アクティビティ(本パッケージ内の他アクティビティはWindowsプロジェクトに対応している)
・Exchange メール メッセージを削除
・Exchange スコープ・UiPath.SAP.BAPI.Activities
※「Windows」、「クラスプラットフォーム」には対応しておりません。
参考:
・UiPath Marketplaceで取得可能なほとんどのカスタムアクティビティ(コミュニティサポート)
※例:UiPathTeam.Salesforce.ExtensionPackage.Activities、UiPathTeam.Confluence.Activitiesなど
・Microsoft.Activities.Extensions
・(UiPath.Mail.Activities v1.21.1未満をご利用の場合)UiPath.Mail.Activitiesのうち以下の一部のアクティビティ
・Exchange メール メッセージを取得
・メッセージをフォルダーに移動
・Exchange メール メッセージを送信
・IBM Notes メール メッセージを削除
・IBM Notes メール メッセージを取得
・IBM Notes メール メッセージを移動
・IBM Notes メール メッセージを送信
参考:
プロジェクトの対応OS:UiPath.Mail.Activities
追記:UiPath.Mail.Activities v1.21.1にてUiPath.Mail.Activitiesの全てのアクティビティがWindowsプロジェクトで対応できるよう修正が行われました。
参考:リリースノート v1.21.1
ー抜粋ー
新機能と改良点
Microsoft Exchange Server と IBM Notes のすべてのアクティビティが Windows プロジェクトで利用できるようになりました。これにより、新しい Windows プロジェクトを作成し、これらのアクティビティを含む既存の Windows - レガシ プロジェクトを Windows 対応のプロジェクトに移行することができます。
9.2. ライブラリも対応OSを「Windows」として「Windows」プロジェクトでパブリッシュしなおす必要がある
【Studioのみ】
ライブラリは対応OSが同じプロセスのみにインストールできる仕様となります。カスタムライブラリをご利用の場合、Windowsプロジェクトでご利用いただくためには、対応OSを「Windows」としてパブリッシュしなおす必要があります。
参考:
再利用可能なコンポーネントをオートメーション プロジェクトに追加する
ー抜粋ー
クロスプラットフォーム対応のライブラリは、クロスプラットフォーム プロジェクトと Windows プロジェクトにインストールできます。Windows - レガシ ライブラリと Windows ライブラリは、対応 OS (バージョン) が同じプロセスにのみインストールできます。
ライブラリと同様に『プロセスを呼び出し(Invoke Process)』も、呼び出し先プロセスの対応OSを「Windows」としてパブリッシュし直す修正が必要です。
9.3. 『ワークフローファイルを呼び出し(Invoke Workflow)』アクティビティで指定するワークフロー名に、変数を利用できなくなる
【Studioのみ】
「Windows」プロジェクトではワークフローをパブリッシュ時にコンパイルする都合上、Studio v23.4までは『ワークフローファイルを呼び出し(Invoke Workflow)』アクティビティで指定するワークフロー名に、変数・引数を利用できない仕様です。
回避策として変数ではなくワークフローのパスを指定するか、Studio v23.10以降にアップグレードください。
参考:
ワークフローファイルを呼び出し
ー抜粋ー
Windows プロジェクトおよびクロスプラットフォーム プロジェクトでは、ワークフロー ファイル名としての変数と引数の使用はサポートされていません。ワークフロー ファイル名として変数や引数を使用すると、「式の使用は現在サポートされていません。」というエラー メッセージが表示されます。
2024年1月追記
Studio v23.10系で「ワークフローファイルを呼び出し(Invoke Workflow)」アクティビティで指定するワークフロー名に、変数・引数を利用できるようになりました
参考:
その他の改良点
9.4. デバッグ実行時、「プロジェクトに検証エラーがないか確認しています」表示が出て時間がかかる
【Studioのみ】
「Windows - レガシ」プロジェクトは実行やパブリッシュでコンパイルが行われませんが、「Windows」プロジェクトではコンパイルが行われているため、コンパイルの前の検証に時間を要してしまうため、仕様として以前より時間を要することがございます。
回避策としてできるだけ最新のバージョンのUiPath Studioをご利用ください。
9.5. 「Windows」プロジェクトのパブリッシュ後に.nupkgファイルを展開したワークフローファイルの取得、Orchestratorパッケージ画面でのワークフローの確認ができない
【Studioのみ】
「Windows」プロジェクトのパブリッシュ時には、既定値ではワークフローがコンパイルされ、ワークフローファイルそのものは含まれなくなることが原因です。
回避策としてソースを含めるにチェックを入れて頂くと、ワークフローが確認できるようになります。
参考:
オートメーション プロジェクトのパブリッシュについて
ー抜粋ー
ソースを含める - このオプションを選択すると、これまで非公開になっていたワークフローを含むすべての .xaml ソースが、パブリッシュされるパッケージ内にパッケージ化されます。
9.6. 『PowerShellを呼び出し』アクティビティを使用してPowerShellコマンドを実行する場合、実行されるPowershellのビット数が異なる
【Studioのみ】
「Windows -レガシ」プロジェクトでは Windows PowerShell (x86)(32ビット)、「Windows」プロジェクトでは Windows PowerShell(64ビット)が実行される
対応方法1:UiPath.System.Activitiesを最新バージョンに変更し、『PowerShellを呼び出し』アクティビティの「実行モード」プロパティでビット数を指定する。
対応方法2:『プロセスを開始』アクティビティを使用して32ビットのPowerShellのパスを明示的に指定して呼び出す。
パス: “C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe”
9.7. 『プロセスを開始』のファイルパスに"cmd.exe"を指定してコマンドプロンプトを呼び出す場合、呼び出し元と呼び出し先のビット数が異なる。
【Studioのみ】
呼び出し元が「Windows - レガシ」プロジェクトでは32bit、「Windows」プロジェクトでは64bitが起動されます。
回避策として「Windows」プロジェクトで32bitのコマンドプロンプトを実行するには『プロセスを開始』アクティビティを使用して32ビットのPowerShellのパスを明示的に指定して呼び出します。
パス:“C:\Windows\SysWOW64\cmd.exe”
9.8. 「Windows」プロジェクトで『トライキャッチ』アクティビティの例外の種類をドロップダウンリストから選択しようとしても選択リストが消えて選択できない
【Studio、StudioX両方】
以下のStudioバージョンで修正済です。以下のバージョン以降にアップグレードください。
・v22.10.10
・v23.4.3
上記バージョンにアップグレードできない場合は以下の回避策をお試しください。
・キーボードの「矢印Upキー」と「矢印Downキー」を使って、例外の種類を選択し、Enterキーで確定ください。
9.9. デバッグ時や実行時に「Expression Activity 型 ‘VisualBasicValue`1’ は、実行するにはコンパイルする必要があります」エラーが発生する
【Studio、StudioX両方】
エラーメッセージ
System.NotSupportedException: Expression Activity 型 'VisualBasicValue`1' は、実行するにはコンパイルする必要があります。ワークフローがコンパイルされていることを確認してください。 at System.Activities.Expressions.CompiledExpressionInvoker.InvokeExpression(ActivityContext activityContext)
at Microsoft.VisualBasic.Activities.VisualBasicValue`1.Execute(CodeActivityContext context)
エラーの発生するアクティビティの設定箇所で利用しているダブルクォーテーションに問題がある可能性がございます。
回避策としてエラーの発生するアクティビティの設定箇所で利用しているダブルクォーテーションを一度削除し、手動で半角(「"」)のまっすぐなダブルクォテーションをキーボードから入力しなおすことで、本事象が解消するかお試しください。
上記で事象が解消しない場合はダブルクォーテーションを変更したアクティビティの手動削除・再作成をお試しください。
参考(英文記事):
Getting Expression Activity Type VisualBasicValue1 Requires Compilation In Order To Run
https://uipath.my.salesforce-sites.com/CaseView/articles/Knowledge/Getting-expression-Activity-type-VisualBasicValue1-requires-compilation-in-order-to-run?lang=en_US
9.10. UiPath.Database.ActivitiesがWindowsプロジェクトへ変換後に動作しない
【Studioのみ】
UiPath.Database.Activitiesで以下のエラーが出力されます。
("Database activities not working anymore due to the following error: Connect SQL: A connection was successfully established with the server, but then an error occurred during the login process. (provider SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted"エラー)
「Windows」 プロジェクトで新しいデータベース接続を構成する際の SQL クライアントのオプションが、Microsoft.Data.SqlClient のみになりましたので、回避策としてMicrosoft.Data.SqlClientを選択ください。
※Windows - レガシ プロジェクトの場合は System.Data.SqlClient と Microsoft.Data.SqlClient のいずれかを選択できます。
参考:
リリースノートーUiPath.Database.Activitiesー
ー抜粋ー
接続オプションが System.Data.SqlClient のアクティビティを含む Windows - レガシ プロジェクトを Windows 対応プロジェクトに変換すると、接続オプションを Microsoft.Data.SqlClient に変更しない限り、実行時に例外がスローされます。
9.11. 『テキストファイルを読み込み』や『CSVを読み込み』アクティビティで「Shift_JIS is not supported」エラー
【Studioのみ】
『テキストファイルを読み込み』や『CSVを読み込み』アクティビティのオプション「エンコード」に"shift_jis"を設定すると以下のエラーが発生します。
'shift_jis is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
「Windows」プロジェクトでは標準だとShift_JISがサポートされなくなるため、明示的に文字コードを追加する必要があります。
回避策として、アクティビティ実行前に、プロバイダの登録が必要です。
ワークフローに、『InvokeMethod』アクティビティを追加し、上記のコードを実行します。
TargetType: System.Text.Encoding
TargetObject:※設定不要
MethodName:RegisterProvider
パラメーター:
・型:EncodingProvider
・値:System.Text.CodePagesEncodingProvider.Instance
・方向:入力
上記内容はUiPath.System.Activities v24.3.0で修正済です。
ー抜粋ー
[テキスト ファイルを読み込み]、[テキスト ファイルに書き込み]、および [文字列を追加書き込み] のアクティビティで、[エンコード] の値として shift_jis がサポートされるようになりました。
補足:
『ワークフローファイルを呼び出し』アクティビティにて分離して呼び出された先でも明示的に文字コードを追加する必要があります。
9.12. 「Windows」プロジェクトで作成したワークフローを「Windows - レガシ」プロジェクトに戻すことができない
【Studio、StudioX両方】
「Windows - レガシ」プロジェクトから「Windows」プロジェクトへ変換すると、「Windows - レガシ」に戻すことはできません。「Windows - レガシ」プロジェクトをご利用になられる場合は「Windows - レガシ」プロジェクトでワークフローを作成し直す必要があります。
「Windows」プロジェクトへの変換時には、変換前の「Windows - レガシ」プロジェクトのバックアップを取得するか、変換時の「新しいプロジェクトを作成する」にチェックを入れることを推奨します。
9.13. 「Windows」プロジェクトで作成したワークフローのアクティビティを「Windows - レガシ」プロジェクトのワークフローにコピーできない
【Studio、StudioX両方】
「Windows」プロジェクトで作成したワークフローのアクティビティは「Windows - レガシ」プロジェクトでは互換性がなく「Windows - レガシ」のワークフローにコピーできない仕様です。
9.14. 「Windows」プロジェクトでコンパイル時に「‘{引数名}’:メンバー名をそれを囲む型の名前と同じにすることはできません」エラーが発生する
【Studioのみ】
Xamlファイル名と同じ名称の引数を設定していることが原因です。
例
Xamlファイル名:Argument.xaml
引数:Argument
回避策としてXamlファイル名と異なる引数名を設定します。
例
Xamlファイル名:Argument.xaml
引数:Argument1
9.15. 「Windows」プロジェクト変換後、StudioXで「このプロジェクトは StudioX プロファイルに対応していません。」エラー
【StudioXのみ】
「Windows」 プロジェクト変換後以下のエラーが表示されます。
このプロジェクトは StudioX プロファイルに対応していません。Studio で開いてエラーを修正できます。
ワークスペース変数が 1 つ以上定義されています。
回避策1.
Studioをご利用可能な環境の場合、Windows変換後のファイルを一時的にStudioで開いていただき、
『単一の Excel プロセス スコープ』を選択後に
変数パネルに表示される、「Notes」という変数を削除し保存、
StudioXに戻してファイルを開くことができるかご確認ください。
回避策2.
Studioが利用できない環境の場合、Main.xamlをメモ帳などで編集ください。
以下手順となります。
・プロジェクトのバックアップを取得いただいた後にMain.xamlをメモ帳で開きます。
・Main.xamlの中に記載されている以下の部分を削除し、保存します。
・保存後、StudioXで該当ファイルが開けることをご確認ください。
<Variable x:TypeArguments="ue:IWorkbookQuickHandle" Default="[new WorkbookQuickHandle(workbookPath:="Project_Notebook.xlsx",visible:=True,autoSave:=False,createNew:=True,readOnly:=False,isWorkspace:=True)]" Name="Notes" />
9.16. SecureString型の変数で「型’System.Net.NetworkCredential’が見つかりません」エラー
【Studioのみ】
SecureString型の変数を再作成ください。
9.17. 「error BC36914: 要素の型を推論できません。Option Strict On が設定されているため、‘Object’ と見なすことはできません。配列の型を指定すると、このエラーが修正される可能性があります。」エラー
【Studio、StudioX両方】
配列変数の初期値等を設定している箇所について、以下の記事に従って手動修正ください。
参考:「Windows - レガシに対応するプロジェクトについて > Windows - レガシ プロジェクトを Windows 対応のプロジェクトに変換する」
※既知の制限事項に記載があります。
変更箇所は以下となります。
UiPath Forumに掲載されている弊社ナレッジベースもご参照ください。
参考:
「Windows - レガシ」プロジェクトから「Windows」プロジェクトに変換後、「error BC36914: 要素の型を推論できません。Option Strict On が設定されているため、‘Object’ と見なすことはできません。配列の型を指定すると、このエラーが修正される可能性があります。」エラーが発生する
9.18. 『ワークフローファイルを呼び出し』アクティビティでプロジェクトフォルダ外のXamlを呼び出せない
【Studioのみ】
『ワークフローファイルを呼び出し』アクティビティで呼び出すXamlをプロジェクトフォルダ内に配置ください。